日期:2014-05-17  浏览次数:20576 次

select嵌套问题
SELECT TOP 10
TA001+'-'+TA002 单据编号,
TA006 产品品号,
TA034 产品品名,
TA035 产品规格,
TA015 预计产量,
TA017 已生产量,
ISNULL((SELECT SUM(TC014) FROM SFCTC
        INNER JOIN SFCTB ON TB001=TC001 AND TB002=TC002 
        WHERE TC004=TA001 AND TC005=TA002 AND TB005='M01' AND TB008='1000'),0) 转移数量,
(SELECT TB005/(MD006/MD007) FROM (
   SELECT TB003 PH,MIN(TB005) FROM MOCTB A 
   INNER JOIN INVMB ON MB001=TB003 WHERE MB042='1' GROUP BY TB003) 
 INNER JOIN BOMMD ON MD003=A.TB003 WHERE MD001=TA006) 已领料量
FROM MOCTA
WHERE TA011 IN('1','2','3') AND TA001 IN('511','521') AND SUBSTRING(TA006,1,2) NOT IN('MB','MT','ML','MD','MX')
ORDER BY TA001+TA002 asc

提示以下错误信息:
Msg 156, Level 15, State 1, Line 9
关键字 'INNER' 附近有语法错误。
------最佳解决方案--------------------
SELECT TOP 10
TA001+'-'+TA002 单据编号,
TA006 产品品号,
TA034 产品品名,
TA035 产品规格,
TA015 预计产量,
TA017 已生产量,
ISNULL((SELECT SUM(TC014) FROM SFCTC
        INNER JOIN SFCTB ON TB001=TC001 AND TB002=TC002 
        WHERE TC004=TA001 AND TC005=TA002 AND TB005='M01' AND TB008='1000'),0) 转移数量,
(SELECT TB005/(MD006/MD007) FROM (
   SELECT TB003 PH,MIN(TB005) FROM MOCTB A  INNER JOIN INVMB ON MB001=TB003 WHERE MB042='1' GROUP BY TB003)  T--这里少了个别名。汗。这东西嵌套的好多啊你
 INNER JOIN BOMMD ON MD003=A.TB003 WHERE MD001=TA006) 已领料量
FROM MOCTA
WHERE TA011 IN('1','2','3') AND TA001 IN('511','521') AND SUBSTRING(TA006,1,2) NOT IN('MB','MT','ML','MD','MX')
ORDER BY TA001+TA002 asc

------其他解决方案--------------------
SELECT TOP 10
 TA001+'-'+TA002 单据编号,
 TA006 产品品号,
 TA034 产品品名,
 TA035 产品规格,
 TA015 预计产量,
 TA017 已生产量,
 ISNULL((SELECT SUM(TC014) FROM SFCTC
         INNER JOIN SFCTB ON TB001=TC001 AND TB002=TC002 
         WHERE TC004=TA001 AND TC005=TA002 AND TB005='M01' AND TB008='1000'),0) 转移数量,
 (SELECT TB005/(MD006/MD007) FROM (
    SELECT TB003 PH,MIN(TB005) FROM MOCTB A  INNER JOIN INVMB ON MB001=TB003 WHERE MB042='1' GROUP BY TB003) A
  INNER JOIN BOMMD ON MD003=A.TB003 WHERE MD001=TA006) 已领料量
 FROM MOCTA
 WHERE TA011 IN('1','2','3') AND TA001 IN('511','521') AND SUBSTRING(TA006,1,2) NOT IN('MB','MT','ML','MD','MX')
 ORDER BY TA001+TA002 asc

还是有错,能说详细点吗?最好带点解释,我对嵌套还是很模糊
Msg 8155, Level