在sql中的count内应用where子句 选择 房间,建筑, 将(房间、房间)计入总公寓, 将(房间.房间)计算为公寓占用 从…起 房间 哪里 (((Rooms.AssetType)'LC')) 分组 房间、建筑;
我想计算在sql中的count内应用where子句 选择 房间,建筑, 将(房间、房间)计入总公寓, 将(房间.房间)计算为公寓占用 从…起 房间 哪里 (((Rooms.AssetType)'LC')) 分组 房间、建筑;,sql,Sql,我想计算Rooms.RoomsWhereRooms.accumped=True(ApartmentsOccupied)但当我将此子句放入sql时,它也会将Where应用到TotalApartments列中,您可以这样做 SELECT Rooms.Building, Count(Rooms.Room) AS TotalApartments, Count(Rooms.Room) AS ApartmentsOccupied FROM Rooms WHERE
Rooms.Rooms
WhereRooms.accumped=True
(ApartmentsOccupied
)但当我将此子句放入sql时,它也会将Where应用到TotalApartments列中,您可以这样做
SELECT
Rooms.Building,
Count(Rooms.Room) AS TotalApartments,
Count(Rooms.Room) AS ApartmentsOccupied
FROM
Rooms
WHERE
(((Rooms.AssetType) <> 'LC'))
GROUP BY
Rooms.Building;
选择
建筑,
将(房间)计算为总公寓,
总计(占用时的情况=真,然后为1,否则为0结束)作为公寓占用
从…起
房间
哪里
资产类型“LC”
分组
建筑;
您可以将一些逻辑移到CASE语句中以进行条件摘要:
SELECT
Building,
Count(Room) AS TotalApartments,
SUM(CASE WHEN Occupied = True THEN 1 ELSE 0 END) AS ApartmentsOccupied
FROM
Rooms
WHERE
AssetType <> 'LC'
GROUP BY
Building;
或者,在某些sql方言中,“True”值为1,因此对于占用的计数,您可以这样做:
Sum(1) AS TotalApartments
将(案例室。如果为true,则为1个房间)计算为ApartmentsOccuped
。当然,这取决于“sql”是什么“sql”。请尝试使用having COUNT(Rooms.ROOM)>0或类似于这些行的值,而不是where。
Sum(1) AS TotalApartments
Sum(Rooms.Occupied) AS ApartmentsOccupied