2015-02-09 57 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