0

次のSQLクエリがあります

SELECT
   [Date], 
   DATENAME(dw,[Date]) AS Day, 
   SUM(CASE WHEN ChargeCode IN (SELECT ChargeCode FROM tblChargeCodes WHERE Chargeable = 1) THEN Units ELSE 0 END) ChargeableTotal,
   SUM(CASE WHEN ChargeCode IN (SELECT ChargeCode FROM tblChargeCodes WHERE Chargeable = 0) THEN Units ELSE 0 END) NotChargeableTotal,
   SUM(Units) AS TotalUnits
FROM 
   tblTimesheetEntries 
WHERE 
   UserID = 'PJW' 
   AND Date >= '2013-01-01' 
GROUP BY 
   [Date] 
ORDER BY 
   [Date] DESC;

しかし、エラーメッセージが表示されます。

集計またはサブクエリを含む式で集計関数を実行することはできません。

CaseElseSummationでサブクエリを使用しているためです。

Chargeableフィールドが他のすべての情報とは異なるテーブルにある場合でも、クエリを修正して、[Units]の合計を2 x Sumof[Units]にするにはどうすればよいですか。2つのテーブルは、tblTimesheetEntriesとtblChargeCodesの両方に表示されるChargeCodeによってリンクされています。

4

1 に答える 1

5

chargeCode:のテーブルに参加してみましたか?

SELECT e.[Date], 
  DATENAME(dw,e.[Date]) AS Day, 
  SUM(CASE WHEN c.Chargeable = 1 THEN e.Units ELSE 0 END) ChargeableTotal,
  SUM(CASE WHEN c.Chargeable = 0 THEN e.Units ELSE 0 END) NotChargeableTotal,
  SUM(e.Units) AS TotalUnits
FROM tblTimesheetEntries e
LEFT JOIN tblChargeCodes c
  on e.ChargeCode = c.ChargeCode
WHERE e.UserID = 'PJW' 
  AND e.Date >= '2013-01-01' 
GROUP BY e.[Date] 
ORDER BY e.[Date] DESC;
于 2013-01-23T14:22:05.817 に答える