2015-02-09 41 views
0
Select Count(*), 
(select Name from Tours Where Tours.ID = TourBooking.TourID) as Name, 
(select Url from Tours Where Tours.ID = TourBooking.TourID) as Url, 
(select Top 1 Name from TourImages Where TourImages.TourID = TourBooking.TourID Order By ID Asc) as ImageName, 
(Select Duration +' '+ CASE WHEN DurationType = 'd' THEN 'Day(s)' WHEN DurationType = 'h' THEN 'Hour(s)' END from Tours Where Tours.ID = TourBooking.TourID)as Duration, 
(select replace(replace('<a> Adult(s) - <c> Children','<a>', sum(case when [Type] = 1 then 1 else 0 end)      ), 
'<c>', sum(case when [Type] = 2 then 1 else 0 end)) from TourPerson Where TourPerson.BookingId = TourBooking.ID) as TotalPassengers, 
StartDate,CreatedDate as BookingDate,ID as BookingID,[Status],ServicePrice 
from TourBooking 

計數如何從這個查詢得到查詢

回答

0

如何從這個查詢獲得計數獲取計數

我想你試圖做與您的第一個COUNT(*)聲明。相反,你可以嘗試嵌套你的整個查詢,並以這種方式獲得計數。

SELECT COUNT(innerTable.*), innerTable.* FROM (
SELECT 
(select Name from Tours Where Tours.ID = TourBooking.TourID) as Name, 
(select Url from Tours Where Tours.ID = TourBooking.TourID) as Url, 
(select Top 1 Name from TourImages Where TourImages.TourID = TourBooking.TourID Order By ID Asc) as ImageName, 
(Select Duration +' '+ CASE WHEN DurationType = 'd' THEN 'Day(s)' WHEN DurationType = 'h' THEN 'Hour(s)' END from Tours Where Tours.ID = TourBooking.TourID)as Duration, 
(select replace(replace('<a> Adult(s) - <c> Children','<a>', sum(case when [Type] = 1 then 1 else 0 end)      ), 
'<c>', sum(case when [Type] = 2 then 1 else 0 end)) from TourPerson Where TourPerson.BookingId = TourBooking.ID) as TotalPassengers, 
StartDate,CreatedDate as BookingDate,ID as BookingID,[Status],ServicePrice 
from TourBooking) as innerTable 
+0

列'innerTable.Name'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。 – Mike 2015-02-09 14:28:48

+0

@Mike然後它看起來像你的內部查詢不起作用。可能與你正在使用的'sum'功能有關。把它們拿出來看看它是否有效。 – LCIII 2015-02-09 14:40:42