2013-12-16 125 views
1

我有两个查询,我相信我需要将第二个查询语句放在FROM第一个查询语句中,请告诉我这样做的最佳方法吗?SQL中from子句中的子查询

QUERY1

SELECT PARTNO_AUD, PARTNO_ING, COSTSET_AUD, 
     ITEMVER_AUD, PROCNO_AUD, PROCVER_AUD, PROCSTAGE_AUD, 
     ALLITEM_AUD, COSTERR, 
     dbo.SSI_DAVL_FUNC('COSTERR', COSTERR, 'E') AS DESCRIPTION 
    FROM dbo.MBI030 
WHERE (PARTNO_ING <> N'') 
    AND (PROCNO_AUD <> N'') 
    AND (COSTERR <> N'00') 

QUERY2

SELECT PARTNO_B02PAR, PARTNO_B02COM, 
     QTYOFF/(100 - PSLOSS) * 100 AS QTY 
    FROM dbo.MBB020 

PARTNO_AUD相同PARTNO_B02PARPARTNO_ING相同PARTNO_B02COM

+1

查看“内连接”或“左外连接”的示例。你可能想要“内部连接” – Derek

回答

3

我假设你想要做的是加入这两个选项卡乐看一起输出

SELECT 
    PARTNO_AUD, 
    PARTNO_ING, 
    COSTSET_AUD, 
    ITEMVER_AUD, 
    PROCNO_AUD, 
    PROCVER_AUD, 
    PROCSTAGE_AUD, 
    ALLITEM_AUD, 
    COSTERR, 
    dbo.SSI_DAVL_FUNC('COSTERR', COSTERR, 'E') AS DESCRIPTION, 
    QTY 
FROM dbo.MBI030 A 
    INNER JOIN (
     SELECT 
      PARTNO_B02PAR, 
      PARTNO_B02COM, 
      QTYOFF/(100 - PSLOSS) * 100 AS QTY 
     FROM dbo.MBB020) B 
    ON A.PARTNO_AUD =B.PARTNO_B02PAR 
     AND A.PARTNO_ING =B.PARTNO_B02COM 
WHERE (PARTNO_ING <> N'') 
    AND (PROCNO_AUD <> N'') 
    AND (COSTERR <> N'00') 

更多信息上加入看This Link about Joins

+0

我以为他想以另一种方式......? – Malachi

1

类似:

SELECT PARTNO_AUD, PARTNO_ING, COSTSET_AUD, 
     ITEMVER_AUD, PROCNO_AUD, PROCVER_AUD, PROCSTAGE_AUD, 
     ALLITEM_AUD, COSTERR, 
     dbo.SSI_DAVL_FUNC('COSTERR', COSTERR, 'E') AS DESCRIPTION 
    FROM dbo.MBI030 
    inner join dbo.MBB020 on PARTNO_AUD = PARTNO_B02PAR and PARTNO_ING = PARTNO_B02COM 
WHERE (PARTNO_ING <> N'') 
    AND (PROCNO_AUD <> N'') 
    AND (COSTERR <> N'00') 

,但你可能要改变你选择的东西,你可以添加:

PARTNO_B02PAR, PARTNO_B02COM, 
     QTYOFF/(100 - PSLOSS) * 100 AS QTY 

如果你想。

1

好吧,它看起来像你想加入。尝试

SELECT q1.PARTNO_AUD, q1.PARTNO_ING, q1.COSTSET_AUD, 
     q1.ITEMVER_AUD, q1.PROCNO_AUD, q1.PROCVER_AUD, q1.PROCSTAGE_AUD, 
     q1.ALLITEM_AUD, q1.COSTERR, 
     dbo.SSI_DAVL_FUNC('COSTERR', q1.COSTERR, 'E') AS DESCRIPTION, q2.qty 
FROM dbo.MBI030 q1 
    INNER JOIN 
    (
     SELECT PARTNO_B02PAR, PARTNO_B02COM, QTYOFF/(100 - PSLOSS) * 100 AS QTY 
     FROM dbo.MBB020 
    ) q2 ON q1.PartNO_AUD = q2.PARTNO_B02PAR AND q1.PARTNO_ING = q2.PARTNO_B02COM 
WHERE (q1.PARTNO_ING <> N'') 
    AND (q1.PROCNO_AUD <> N'') 
    AND (q1.COSTERR <> N'00') 

诀窍是把查询放在括号中,并给它一个别名,如q2。

适用于连接和froms。

+0

这是多么辉煌的人谢谢你 – user2615341

相关问题