为啥我的结果集没有为每一列生成总和?

Posted

技术标签:

【中文标题】为啥我的结果集没有为每一列生成总和?【英文标题】:Why my result set doesn't produce sum for each column?为什么我的结果集没有为每一列生成总和? 【发布时间】:2015-03-11 07:49:19 【问题描述】:

我一直在处理 sql 查询并尝试生成一个新行,显示它下面每一列的总和。

我马上就收到了

DateTime 10Quantity 20Quantity 30Quantity 10Amount 20Amount 30Amount GrandTotal
03/10/2015  792      0           594        7920        0     17820   25740
03/10/2015  332      3           194        9990        0     28220   38739  

但我希望将其作为输出:

DateTime 10Quantity 20Quantity 30Quantity 10Amount 20Amount 30Amount GrandTotal
03/10/2015  792      0           594        7920        0     17820   25740
03/10/2015  332      3           194        9990        0     28220   38739
Totals      1124     3           788        17910       0     46040   64479

SP:即使我尝试了 GROUPING SETS,但未能实现。请帮忙。

ALTER PROCEDURE [dbo].[ReportDenominationWiseTransaction] '03-10-2015', '03-10-2015'
    @FromDate date,
    @ToDate date
    AS
        BEGIN   
            with myquery ([DateTime],amount,Quantity) 
            as
            (
                select  Convert(varchar(20),serverdatetime,101) 'DateTime',amount,1 'Quantity'
                     from tickets
                     WHERE CONVERT(DATE,ServerDateTime) BETWEEN @FromDate and @ToDate
            )
            select *, 10 * c.[10Quantity] '10Amount',20 * c.[20Quantity] '20Amount',30 * c.[30Quantity] '30Amount',((10 * c.[10Quantity])+(20 * c.[20Quantity])+(30 * c.[30Quantity]))'GrandTotal' from (
            SELECT DateTime,[10] AS '10Quantity', [20] AS '20Quantity', [30] AS '30Quantity'
            FROM 
            (SELECT [DateTime], amount,quantity
            FROM myquery) p
            PIVOT
            (
            COUNT ([Quantity])
            FOR [Amount] IN
            ( [10], [20], [30])
            ) AS pvt
            ) as c
        END

【问题讨论】:

:Your previous question here。使用 sql 查询 GROUPING SETS 并将该结果绑定到 GridView。 My previous answer here. 先生,我尝试分组集,但都搞砸了,没有任何效果,可能是我错误地合并了,你能帮帮我吗? 为什么不使用 UNION ALL?因此,只需生成第一个结果表(因为您已经拥有它,然后使用 UNION ALL 将总和添加到底部。 计算总和(小计),总和(TotalDue); 【参考方案1】:

像这样尝试..

CREATE TABLE #tmpRes
(
 DateTime varchar(50),
10Quantity varchar(50),
20Quantity varchar(50),
10Quantity varchar(50),
10Quantity varchar(50),
10Amount  varchar(50),
20Amount varchar(50),
30Amount varchar(50),
GrandTotal varcahr(50)
)

INSERT INTO #tmpRes(col1,col2,....)
SELECT  cols1,col2,..
FROM  my_table

INSERT INTO #tmpRes(col1,col2,....)
SELECT  'Totals',sum(10Quantity ),sum(20Quantity ).......
FROM  my_table


select * from #tmpRes

【讨论】:

以上是关于为啥我的结果集没有为每一列生成总和?的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE怎么把查询出来的结果集的每条记录的每一列用逗号分隔,一条记录完后用分号分隔

oracle 结果集行转列,多行数据转为一行显示,第一列内容拼接生成字段名

JDBC——ResultSet结果集对象

如何获得二维数组中每一列和每一行的总和?

为啥我的 pandas 数据框只显示一个数据集的结果?

postgresql 计算结果集的总和