簡體   English   中英

我的SQL查詢的形成出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM