2017-02-15 74 views
0

我對SQL很陌生。我有這個代碼,沒有最後的GROUP BY行。有了它,我收到multi-part identifier could not be bound.我需要GROUP BY L1_DESC, L2_DESC and L3_DESC,但無法弄清楚把它放在代碼中的位置。無法綁定多部分標識符 - GROUP BY

SELECT * FROM (
SELECT d.* 
,c.COL_DESC 
--,v.VAL_N 
,an.CUST_ACCT_NBR 
,s.L1_DESC, s.L2_DESC, s.L3_DESC 
FROM dbo.ECL_SEG101_DATA d 
INNER JOIN (
SELECT SITE_ID 
,max(SRC_BATCH_ID) AS SRC_BATCH_ID 
FROM dbo.ECL_SEG101_DATA d 
WHERE SRC_ID = 'K12' 
GROUP BY SITE_ID) d1 
     ON d1.SRC_BATCH_ID = d.SRC_BATCH_ID 
     AND d1.SITE_ID = d.SITE_ID 
INNER JOIN dbo.ECL_SEG002_EXT_DATA_VAR v 
     ON d.SRC_BATCH_ID = v.LIST_ID 
     AND d.SRC_REC_ID = v.ROW_ID 
LEFT OUTER JOIN dbo.INS_REF006_ACCT an 
      ON d.SITE_ID = an.LOC_KEY 
INNER JOIN dbo.ECL_SEG101_SEGMENT s 
     ON d.SITE_SEG_LVLS_ID = s.LVLS_ID 
INNER JOIN dbo.ECL_SEG002_EXT_COL c 
     ON v.COL_ID = c.COL_ID 
WHERE d.Site_Data_Ord = '1') p 
GROUP BY c.COL_DESC, an.CUST_ACCT_NBR, s.L1_DESC, s.L2_DESC, s.L3_DESC 

回答

0

你別名子選擇爲p但你GROUP BY引用c.an.等等這些都不是有效的別名 - 僅p.是。

此外,您不能返回*作爲從d.*在子選擇中返回的列不是GROUP BY的一部分。您需要以某種方式彙總這些數據(COUNTSUM等)。

因此,你需要:

SELECT p.COL_DESC, p.CUST_ACCT_NBR, p.L1_DESC, p.L2_DESC, p.L3_DESC 
--, SOME_AGGREGATE_FUNCTION() 
FROM (
    SELECT d.* 
    ,c.COL_DESC 
    --,v.VAL_N 
    ,an.CUST_ACCT_NBR 
    ,s.L1_DESC, s.L2_DESC, s.L3_DESC 
    FROM dbo.ECL_SEG101_DATA d 
    INNER JOIN (
     SELECT SITE_ID 
     ,max(SRC_BATCH_ID) AS SRC_BATCH_ID 
     FROM dbo.ECL_SEG101_DATA d 
     WHERE SRC_ID = 'K12' 
     GROUP BY SITE_ID) d1 
    ON d1.SRC_BATCH_ID = d.SRC_BATCH_ID 
    AND d1.SITE_ID = d.SITE_ID 
    INNER JOIN dbo.ECL_SEG002_EXT_DATA_VAR v 
    ON d.SRC_BATCH_ID = v.LIST_ID 
    AND d.SRC_REC_ID = v.ROW_ID 
    LEFT OUTER JOIN dbo.INS_REF006_ACCT an 
    ON d.SITE_ID = an.LOC_KEY 
    INNER JOIN dbo.ECL_SEG101_SEGMENT s 
    ON d.SITE_SEG_LVLS_ID = s.LVLS_ID 
    INNER JOIN dbo.ECL_SEG002_EXT_COL c 
    ON v.COL_ID = c.COL_ID 
    WHERE d.Site_Data_Ord = '1') p 
GROUP BY p.COL_DESC, p.CUST_ACCT_NBR, p.L1_DESC, p.L2_DESC, p.L3_DESC 
相關問題