2010-09-30 21 views
1

的下面是我的查詢,其獲得的地層錯誤,查詢將描述它的結構.....誰能幫助這個錯誤在我編隊SQL查詢

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 
+1

你能描述你得到的錯誤消息嗎? – 2010-09-30 11:48:46

+0

子查詢返回多個值。當子查詢遵循=,!=,<, <= , >,> =或當子查詢用作表達式時,這是不允許的。 – Prabhakaran 2010-09-30 11:53:25

回答

4

您可以在select部分中使用子查詢,僅當它們返回標量(單列和單列)值時才允許使用子查詢。

似乎

SELECT COUNT(ActualDate) 
from BufferListforBilling 
where BufferEmpName IS NOT NULL 
GROUP BY EmpId) as BillDay 

返回多行(由於GROUP BY)。

這並不完全清楚你的意圖是什麼。如果你確切解釋你想要什麼,你會得到更好的幫助。另外,請說明您的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 

(辦通知,其中AcutalDate是NOT NULL您Total_No_Days只會計算行;使用COUNT(*)如果你想統計所有行)

+0

Empid ActualDate EmpName BuffEmpNames =========================================== 1 5/6/10 Roy NULL 1 6/6/10 Roy NULL 1 7/6/10 Roy分配1 8/6/10 Roy分配2 5/6/10 Deb分配2 6/6/10 Deb NULL 2 7/6/10 Deb NULL 2 8/6/10 Deb NULL上面是我的表結構,我需要得到一個輸出像Employee Employee Total_No_of_Days Bill_Days Non_Bill_Days =================== ============================================ 1-Roy 4 2 2 2-Deb 4 1 3 – Prabhakaran 2010-09-30 12:10:48

+0

您是否嘗試過我的建議查詢?我認爲它會給你你需要的東西 – Unreason 2010-09-30 15:59:48

0

看起來你與+連接字符串。據我所知,SQL不支持這一點。你應該看看CONCAT()-function

+0

只能正常工作,我的需求是在()中獲取內部查詢的其他兩個值() – Prabhakaran 2010-09-30 11:57:18

+0

某些版本的SQL(例如SQLServer)確實支持'+'作爲字符串連接運算符。 – 2010-09-30 15:15:19

+0

@Mark Ba​​nnister:好的,謝謝你提供的信息。 – jwueller 2010-09-30 15:51:06