订单表order有以下字段
goodid, --编号
qty, --数量
wgt, --重量
type, --计量类型
如果要统计它们的数、重量,这好办:
select sum(qty), sum(wgt) from order group by goodid但现在有一个条件上:type为0时,重量有效、数量无效,非0则数量有效、重量无效,如果要统计有效的数量和重量,怎么写?

解决方案 »

  1.   

    补充说明:对同一货品编号goodid,它在订单表中的type都是一样的。
      

  2.   

    select case type when 1 then qty=sum(qty) else wgt=sum(wgt) end from order group by goodid
      

  3.   

    更新一下
    select  数量质量=case type when 1 then sum(qty) else sum(wgt) end from t group by goodid,type
      

  4.   

    select goodid,case type when <>0 then sum(qty),case type when =0 then sum(wgt)
    from order group by goodid
      

  5.   

    DECLARE @T TABLE(GOODID INT , QTY INT , WGT FLOAT , TYPE VARCHAR(2))
    INSERT INTO @T
    SELECT 1 , 20 , 30 , 1 UNION ALL
    SELECT 1 , 10 , 50 , 0 UNION ALL
    SELECT 2 , 20 , 30 , 0 UNION ALL
    SELECT 2 , 10 , 50 , 1 
    SELECT  GOODID,
            SUM(CASE TYPE WHEN 0 THEN WGT END) AS WGT,
            SUM(CASE WHEN CAST(TYPE AS INT) <> 0 THEN QTY END) AS QTY
    FROM    
            @T
    GROUP BY  GOODID