【发布时间】:2017-02-23 22:54:37
【问题描述】:
我正在尝试汇总一个查询,该查询按客户逐月显示收入,以及最后一列中所有月份的 SUM(Revenue)。到目前为止,我在下面有这个查询。这是尽可能接近我正在寻找的东西:
SELECT cust_num as Customer, CONVERT(CHAR(4), date, 100) + CONVERT(CHAR(4), date, 120) AS 'Month',
SUM(q1.amount) AS Revenue
FROM
(SELECT cust_num, inv_date AS date,
SUM(amount) AS amount
FROM artran_mst
WHERE (type = 'i') and cust_num = 'HON0994' and (inv_date BETWEEN '1/1/2017' AND '2/23/2017')
GROUP BY cust_num, inv_date
UNION ALL
SELECT cust_num, inv_date AS date,
SUM(amount*-1) AS amount
FROM artran_mst
WHERE (TYPE = 'c') and cust_num = 'HON0994' AND (inv_date BETWEEN '1/1/2017' AND '2/23/2017')
GROUP BY cust_num, inv_date
UNION ALL
SELECT cust_num, inv_date AS date,
SUM(amount) AS amount
FROM artran_mst
WHERE (TYPE = 'd') and cust_num = 'HON0994'
AND (inv_date BETWEEN '1/1/2017' AND '2/23/2017')
GROUP BY cust_num, inv_date) q1
GROUP BY cust_num, MONTH(date),
CONVERT(CHAR(4), Date, 100) + CONVERT(CHAR(4), Date, 120)
ORDER BY RIGHT(CONVERT(CHAR(4), date, 100) + CONVERT(CHAR(4), date, 120),4),
MONTH(date)
它返回以下内容:
+----------+----------+---------+
| Customer | Month | Revenue |
+----------+----------+---------+
| HON0994 | Jan 2017 | 1170662 |
| HON0994 | Feb 2017 | 787066 |
+----------+----------+---------+
我需要以某种方式添加一个数据透视表和一个计算列,以将月份显示为列,最后一列是“总计”。见:
+----------+----------+----------+---------+
| Customer | Jan 2017 | Feb 2017 | Total |
+----------+----------+----------+---------+
| HON0994 | 1170662 | 787066 | 1957728 |
+----------+----------+----------+---------+
【问题讨论】:
标签: sql sql-server pivot