我在下面有这个查询:
SELECT distinct COUNT(Status) AS [Transactions], sender AS [Supplier],
left(DATENAME(mm, Date_Reported), 3) AS Month, DATENAME(yyyy, Date_Reported) AS Year
FROM TX
and Date_Reported >= DATEADD(MONTH, -13, CAST(GETDATE() AS DATE))
GROUP BY DATENAME(mm, Date_Reported), DATENAME(yyyy, Date_Reported), sender
ORDER BY sender, Year, Month DESC;
它给了我一张如下表:
TX | Supplier | Month | Year
现在,上面的X行可以包含相同的供应商,并且可以使用与之相关的值,如下所示:
**TX | Supplier | Month | Year**
1 | A | Oct | 2017
5 | A | Jan | 2017
3 | A | Mar | 2018
2 | A | Sep | 2017
所有供应商都是这种情况,因此我需要在一个简洁的表格中找到不同的供应商及其价值,而不是一个包含很多行的长卷表:
Supplier | May 17 | Jun 17 | Jul 17 ... | May 18 |
我还想添加两个额外的列:过去13个月的平均值(即5月17日 - 5月18日)以及过去13个月的总数,所以决赛桌应如下所示:
Supplier | May 17 | Jun 17 | Jul 17 ... | May 18 | Average | Total
我很感激我问了很多,但我希望有人可以帮助我解决上述所有问题的单一查询。
我提前感谢你:)。
答案 0 :(得分:0)
你必须做这样的事情:
SELECT sender AS [Supplier],
SUM(CASE WHEN MONTH(Date_Reported) = 5 AND YEAR(Date_Reported) = 2017 THEN 1 ELSE 0 END) AS [May 17],
SUM(CASE WHEN MONTH(Date_Reported) = 6 AND YEAR(Date_Reported) = 2017 THEN 1 ELSE 0 END) AS [Jun 17]
GROUP BY sender
ORDER BY sender