【问题标题】:Mssql summary row using ROLLUP使用 ROLLUP 的 Mssql 汇总行
【发布时间】:2018-02-02 09:11:54
【问题描述】:

我正在尝试使用 ROLLUP 分组生成摘要行,
这是我的查询

 SELECT nic as NIC,branch_id,SUM(as_share),SUM(as_deposit) as as_deposit,SUM(as_credits) as as_credits,SUM(as_fixed) as as_fixed,SUM(as_ira) as as_ira,SUM(as_saviya) as as_saviya
    FROM As_Member_Account_Details
    GROUP BY nic,branch_id
    WITH ROLLUP

但它给了我这个输出,

112233  1       30.00   0.00    0.00    50.00   0.00    0.00
112233  2       20.00   0.00    0.00    0.00    0.00    0.00
112233  3       0.00    0.00    0.00    0.00    0.00    0.00
112233  NULL    50.00   0.00    0.00    50.00   0.00    0.00
NULL    NULL    50.00   0.00    0.00    50.00   0.00    0.00

最后一行之前的行是不必要的。因为应该只有 3 个数据行 + 一个摘要行。我怎样才能消除那一行

【问题讨论】:

  • 汇总为每个分组列生成行。如果您不想要这些列,可以将此数据插入临时表,然后删除不必要的行。
  • 请张贴 DDL,DML 所涉及的表格,不要张贴图片。拥有此信息有助于其他人快速重现您的问题并更好地解决问题。以下是一些可能有助于您理解的示例。 --样本数据 create table t1 ( id int ) insert into t1 values (1), (2), (1) 我当前的查询/我尝试过的内容: select id,count(*) as cnt from t1 group by id 我当前的结果: id cnt 1 2 2 1 我的预期结果: id cnt 1 2 2 1 1 2

标签: sql sql-server rollup


【解决方案1】:

Grouping sets 允许在立方体数据时进行更精细的控制。

SELECT nic as NIC
     , branch_id,SUM(as_share)
     , SUM(as_deposit) as as_deposit
     , SUM(as_credits) as as_credits
     , SUM(as_fixed) as as_fixed
     , SUM(as_ira) as as_ira
     , SUM(as_saviya) as as_saviya
FROM As_Member_Account_Details
GROUP BY GROUPING SETS ((nic,branch_id),())

【讨论】:

    【解决方案2】:
    WITH CTE_YourQuery AS
    (
        SELECT nic as NIC,branch_id,SUM(as_share),SUM(as_deposit) as as_deposit,SUM(as_credits) as as_credits,SUM(as_fixed) as as_fixed,SUM(as_ira) as as_ira,SUM(as_saviya) as as_saviya
        FROM As_Member_Account_Details
        GROUP BY nic,branch_id
        WITH ROLLUP
    )
    SELECT * 
    FROM CTE_YourQuery
    WHERE NOT (nic IS NOT NULL AND branch_id IS NULL)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-20
      • 2020-09-20
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多