qui*_*kxi 3 sql sql-server sql-server-2000
我有这个RoomTable有价值
SID Room Date APhase BPhase ACount BCount
1 One 10/28/2012 4 5 3 6
2 One 10/29/2012 2 3 -1 -1
3 One 10/30/2012 4 5 7 -1
4 Two 10/28/2012 8 3 2 3
5 Two 10/30/2012 3 5 4 6
6 Three 10/29/2012 5 8 2 -1
7 Three 10/30/2012 5 6 -1 4
8 Four 10/29/2012 6 2 -1 -1
9 Four 10/30/2012 5 8 -1 -1
Run Code Online (Sandbox Code Playgroud)
我想要的是返回以下内容:
我可以使用此查询获得数字1的查询
SELECT Room, sum(APhase) as TotalAPhase, sum(BPhase) as TotalBPhase
FROM RoomTable
WHERE Date between '10/28/2012' and '10/30/2012'
group by Room
order by Room
Run Code Online (Sandbox Code Playgroud)
但我对如何包含2-4号查询感到困惑.
这是我想要的输出
Room TotalAPhase TotalBPhase ACount BCount
One 10 13 7 6
Two 11 8 4 6
Three 10 13 2 4
Four 11 10 0 0
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激.谢谢.
小智 5
希望这适用于您的情况:
SELECT
Room
,SUM(APhase) AS TotalAPhase
,SUM(BPhase) AS TotalBPhase
,ISNULL(( SELECT TOP 1 RT1.ACount
FROM RoomTable RT1
WHERE RT1.Room = RT.Room
AND RT1.ACount != -1
ORDER BY RT1.Date DESC
), 0) AS ACount
,ISNULL(( SELECT TOP 1 RT2.BCount
FROM RoomTable RT2
WHERE RT2.Room = RT.Room
AND RT2.BCount != -1
ORDER BY RT2.Date DESC
), 0) AS BCount
FROM RoomTable RT
--WHERE Date between '10/28/2012' and '10/30/2012'
GROUP BY Room
ORDER BY Room
Run Code Online (Sandbox Code Playgroud)
我不确定你是否真的需要where子句,所以我评论了它.在结果表中,RoomB的TotalBPhase值应该是14,从这个SQL Fiddle演示中可以看出.
| 归档时间: |
|
| 查看次数: |
657 次 |
| 最近记录: |