2017-02-15 6 views
0

私はSQLを使い始めました。私は最後のGROUP BY行なしで動作するこのコードを持っています。それで、私はmulti-part identifier could not be bound.を受け取ります。GROUP BY L1_DESC, L2_DESC and L3_DESCにする必要がありますが、これをコードのどこに入れるのか分かりません。複数の部分の識別子をバインドすることができませんでした - GROUP BY

あなたは pまだ GROUP BY参照 c.として副選択をエイリアスしている
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

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 
関連する問題