[英]Error in formation of my SQL Query
下面是我的查詢,它得到一個編隊錯誤,查詢將描述它的結構.....任何人都可以為此提供幫助
SELECT (CAST(Empid AS VARCHAR)+' '+EmployeeName) AS Employee
,COUNT(ActualDate)Total_No_Days
,(SELECT COUNT(ActualDate)
from BufferListforBilling
where BufferEmpName IS NOT NULL
GROUP BY EmpId) as BillDays
,(SELECT COUNT(ActualDate)
from BufferListforBilling
where BufferEmpName IS NULL
GROUP BY EmpId) as NonBillDays
FROM BufferListforBilling
WHERE Team = 'ABC'
GROUP BY Empid ,EmployeeName
Empid ActualDate EmpName BuffEmpNames
===========================================
1 5/6/10 Roy NULL
1 6/6/10 Roy NULL
1 7/6/10 Roy Assigned
1 8/6/10 Roy Assigned
2 5/6/10 Deb Assigned
2 6/6/10 Deb NULL
2 7/6/10 Deb NULL
2 8/6/10 Deb NULL
以上是我的表結構,我需要得到像下面這樣的輸出
Employee Total_No_of_Days Bill_Days Non_Bill_Days
===============================================================
1-Roy 4 2 2
2-Deb 4 1 3
您在選擇部分中使用子查詢,僅當它們返回標量(單列和單行)值時才允許使用子查詢。
看起來
SELECT COUNT(ActualDate)
from BufferListforBilling
where BufferEmpName IS NOT NULL
GROUP BY EmpId) as BillDay
返回多行(由於分組依據)。
你的意圖並不完全清楚。 如果你准確解釋你想要什么,你會得到更好的幫助。 另外,請說明您的RDBMS引擎。
編輯采取(希望不是那么)瘋狂猜測試試這個
SELECT (CAST(Empid AS VARCHAR)+' '+EmployeeName) AS Employee
,COUNT(ActualDate) Total_No_Days
,COUNT(BufferEmpName) as BillDays
,COUNT(BufferEmpName)-COUNT(ActualDate) as NonBillDays
FROM BufferListforBilling
WHERE Team = 'ABC'
GROUP BY Empid ,EmployeeName
(請注意,您的Total_No_Days
僅計算AcutalDate
為NOT NULL的行;如果要計算所有行,請使用COUNT(*))
看起來你用+
連接字符串。 據我所知,SQL不支持這一點。 你應該看一下CONCAT()
函數 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.