我们正在开发 MYSQL 、 ASP.Net 应用程序。我正在使用 TempTable 来存储我的存储过程的输出。
由于我有记录集表,现在我关心的是如何获取 TOTAL rowwise 和 ColumnWise 并分别在新行和新列中显示它。下图将显示,我期望什么输出
我们正在开发 MYSQL 、 ASP.Net 应用程序。我正在使用 TempTable 来存储我的存储过程的输出。
由于我有记录集表,现在我关心的是如何获取 TOTAL rowwise 和 ColumnWise 并分别在新行和新列中显示它。下图将显示,我期望什么输出
尝试
SELECT c1, c2, c3, c4, c5, c1+c2+c3+c4+c5 c6
FROM table1
UNION ALL
SELECT SUM(c1), SUM(c2), SUM(c3), SUM(c4), SUM(c5), SUM(c1+c2+c3+c4+c5)
FROM table1
输出:
| C1 | C2 | C3 | C4 | C5 | C6 |
---------------------------------------
| 45 | 416 | 0 | 0 | 0 | 461 |
| 7887 | 0 | 0 | 0 | 0 | 7887 |
| 444 | 0 | 1628 | 0 | 0 | 2072 |
| 8376 | 416 | 1628 | 0 | 0 | 10420 |
这是SQLFiddle演示
您可以使用GROUP BY WITH ROLLUP
获取总计的行,然后将列相加以获得总计的列:
select
coalesce(col1, 'Total') col1,
sum(col2) col2,
sum(col3) col3,
sum(col4) col4,
sum(col5) col5,
sum(col1 + col2 + col3 + col4 + col5) Total
from yt
group by col1 with rollup;
请参阅SQL Fiddle with Demo。结果:
| COL1 | COL2 | COL3 | COL4 | COL5 | TOTAL |
----------------------------------------------
| INCust | 45 | 416 | 0 | 0 | 461 |
| none | 444 | 0 | 1628 | 0 | 2072 |
| venddd | 7887 | 0 | 0 | 0 | 7887 |
| Total | 8376 | 416 | 1628 | 0 | 10420 |