【发布时间】:2015-02-13 15:18:38
【问题描述】:
我正在尝试将两个非常相似的 SQL 查询与不同的日期范围结合起来,以生成一个输出表。 (将本周的结果与去年相应的一周进行比较。)
我对 SO 进行了一些搜索,发现了一些类似的问题(例如 this one),但仍然没有设法让这个工作:
这两个查询是:
SELECT
[arrpoint]
,COUNT([arrpoint]) AS NumberOfTimesTW
FROM [groups] tb1
INNER JOIN [fileinfo] tb2 ON tb1.op_name = tb2.[operator]
INNER JOIN [costs] tb4 ON tb2.[fileno] = tb4.[fileno]
WHERE
[bedbank] = 1
AND [booked] >= DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0)
GROUP BY [ arrpoint] HAVING (COUNT([arrpoint])>1)
ORDER BY NumberOfTimesTW DESC
和:
SELECT
[arrpoint]
,COUNT([arrpoint]) AS NumberOfTimesTW
FROM [groups] tb1
INNER JOIN [fileinfo] tb2 ON tb1.op_name = tb2.[operator]
INNER JOIN [costs] tb4 ON tb2.[fileno] = tb4.[fileno]
WHERE
[bedbank] = 1
AND [booked] >= DateAdd(wk,-52,DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0))
AND [booked] <= DateAdd(wk,-51,DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0))
GROUP BY [ arrpoint] HAVING (COUNT([arrpoint])>1)
ORDER BY NumberOfTimesTW DESC
这些输出:
arrpoint | NumberOfTimesTW
abc | 3
def | 2
和:
arrpoint | NumberOfTimesTWLY
ghi | 5
klm | 4
abc | 1
我希望得到的是这样的:
arrpoint | NumberOfTimesTW | NumberOfTimesTWLY
abc | 3 | 1
def | 2 |
ghi | | 5
klm | | 4
对 SQL 了解不多,我原本以为只要在两个查询之间加上 UNION 就可以实现这一点,但没有运气。
谁能给我一些关于如何实现这一点的指导?
【问题讨论】:
标签: sql sql-server