产品名称 规格 单位 数量 单价 金额 折扣率
90弯头 160 袋 52 2 104 0.3
立检口 160 袋 31 3 93 0.3
197
小计 0.3 59.1
立检口 50 袋 30 4 120 0.5
斜三通 110 袋 60 5 300 0.5
420
小计 0.5 210
总计173袋 59.1+210=269.1

解决方案 »

  1.   

    把你需要统计的用sum加起来就可以了,
      

  2.   

    select
    产品名称,规格,单位,数量,单价,金额,
    case when 排序=0 then 折扣率 else null end as 折扣率
    from (
    select 产品名称,规格,单位,数量,单价,金额,折扣率,cast(0 as int) as 排序
    from 原表
    union all
    select null as 产品名称,null as 规格,null as 单位,null as 数量,null as 单价,sum(金额) as 金额,折扣率,1 as 排序
    from 原表
    group by 折扣率
    union all
    select '小计' as 产品名称,null as 规格,null as 单位,null as 数量,折扣率 as 单价,sum(金额)*折扣率 as 金额,折扣率,2 as 排序
    from 原表
    group by 折扣率
    union all
    select '总计'+cast(sum(数量) as varchar)+'袋' as 产品名称,null as 规格,null as 单位,null as 数量,null as 单价,sum(金额*折扣率) as 金额,max(折扣率) as 折扣率,3 as 排序
    from 原表
    ) as t
    order by t.折扣率,t.排序
      

  3.   

    sql server的排序还是这么奇怪,改了下--原数据
    declare @原表 table (
    产品名称 nvarchar(50),
    规格 varchar(20),
    单位 nvarchar(10),
    数量 int,
    单价 numeric(10,2),
    金额 numeric(10,2),
    折扣率  numeric(10,2)
    )
    insert @原表 select
    N'90弯头', '160', N'袋', 52, 2, 104, 0.3
    union all select
    N'立检口', '160', N'袋', 31, 3, 93,0.3
    union all select
    N'立检口', '50', N'袋', 30, 4, 120, 0.5
    union all select
    N'斜三通', '110', N'袋', 60, 5, 300, 0.5--查询
    select
    产品名称,规格,单位,数量,单价,金额,
    case when 排序=0 then 折扣率 else null end as 折扣率
    from (
    select 产品名称,规格,单位,数量,单价,金额,折扣率,cast(0 as int) as 排序
    from @原表
    union all
    select null as 产品名称,null as 规格,null as 单位,null as 数量,null as 单价,sum(金额) as 金额,折扣率,1 as 排序
    from @原表
    group by 折扣率
    union all
    select N'小计' as 产品名称,null as 规格,null as 单位,null as 数量,折扣率 as 单价,sum(金额)*折扣率 as 金额,折扣率,2 as 排序
    from @原表
    group by 折扣率
    union all
    select N'总计'+cast(sum(数量) as varchar)+'袋' as 产品名称,null as 规格,null as 单位,null as 数量,null as 单价,sum(金额*折扣率) as 金额,max(折扣率) as 折扣率,3 as 排序
    from @原表
    ) as t
    order by t.折扣率*1,t.排序--结果
    产品名称                                               规格                   单位                  数量                                      单价                                      金额                                     折扣率
    -------------------------------------------------- -------------------- ---------- ----------- --------------------------------------- --------------------------------------- ---------------------------------------
    90弯头                                               160                  袋                   52                                    2.00                                  104.00                                    0.30
    立检口                                                160                  袋                   31                                    3.00                                   93.00                                    0.30
    NULL                                               NULL                 NULL              NULL                                    NULL                                  197.00                                    NULL
    小计                                                 NULL                 NULL              NULL                                    0.30                                   59.10                                    NULL
    立检口                                                50                   袋                   30                                    4.00                                  120.00                                    0.50
    斜三通                                                110                  袋                   60                                    5.00                                  300.00                                    0.50
    NULL                                               NULL                 NULL              NULL                                    NULL                                  420.00                                    NULL
    小计                                                 NULL                 NULL              NULL                                    0.50                                  210.00                                    NULL
    总计173袋                                             NULL                 NULL              NULL                                    NULL                                  269.10                                    NULL(9 行受影响)
      

  4.   

    学习的都这么有难度,感谢Haiwer
      

  5.   

    zjcxc(邹建)
    数量统计一下就行了,不管是不是一样的计量单位