0

私は自分のデータの合計数を取得したい次のクエリを持っています

SELECT  
  TI.[text] as zone,
  YEAR (ER.Inserted) as [Year], 
  SUM(CONVERT(INT,DRT.RDRT)) as RDRT,
  SUM(CONVERT(INT,DRT.FACT)) as FACT ,
  SUM(CONVERT(INT,DRT.ERU))  as ERU,
  (
     SELECT COUNT(ER1.ReportID) 
     FROM dbo.EW_Reports ER1
     INNER JOIN  dbo.EW_Report_InformationManagement ERI ON ER1.ReportID = ERI.ReportID
     INNER JOIN EW_Report_Country ERC1 ON   ER1.ReportID = ERC1.ReportID 
     INNER JOIN ApplicationDB.dbo.Country C1 ON ERC1.CountryID = C1.countryId 
     INNER JOIN ApplicationDB.dbo.Region R1 ON C1.regionId = R1.regionId
     INNER JOIN ApplicationDB.dbo.Zone Z1  ON R1.zoneId = Z1.zoneId 
     WHERE ERI.EmergencyAppeal IS NOT NULL
      AND (YEAR ( ER1.Inserted) = YEAR ( ER.Inserted))
      AND Z1.zoneId =  Z.zoneId     
   ) as emergencyAppeals    
FROM     EW_Reports ER 
INNER JOIN EW_DisasterResponseTools DRT ON   ER.ReportID = DRT.ReportID 
INNER JOIN EW_Report_Country ERC ON   ER.ReportID = ERC.ReportID  
INNER JOIN ApplicationDB.dbo.Country C ON ERC.CountryID = c.countryId 
INNER JOIN ApplicationDB.dbo.Region R ON c.regionId = R.regionId
INNER JOIN ApplicationDB.dbo.Zone Z ON R.zoneId = Z.zoneId 
INNER JOIN ApplicationDB.dbo.Translation T ON Z.translationId = T.translationId
INNER JOIN ApplicationDB.dbo.TranslationItem TI ON T.translationId = TI.translationId
INNER JOIN EW_lofDisasterTypes D ON ER.DisasterTypeID = D.TranslationID AND D.LanguageID = 1 AND TI.languageID = 1      
WHERE (YEAR ( ER.Inserted) IN (2011,2012))
GROUP BY TI.[text], YEAR (ER.Inserted)  

しかし、次のエラーが発生します

列 'ApplicationDB.dbo.Zone.zoneId' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。

このエラーを解決する方法を教えてください。

4

2 に答える 2

0

サブクエリ where 条件でこれを使用したため、エラーが表示されています

グループにApplicationDB.dbo.Zone.zoneIdを追加する必要があります

于 2013-10-01T09:43:46.580 に答える