單號       品名      數量
IN0012    abcddd     20
IN0021    defsss     30
IN0025    adfsdf     32 
OU0012    asgasg     32
OU0023    sdgsfsa    50
OU0055    asdf3      60其中IN****是入庫單 OU****是出庫單
怎麼用一條語句匯總IN和OU的數據?

解决方案 »

  1.   

    select sum(數量) as 數量,
           substring(單號,1,2)
    from table 
    group by substring(單號,1,2)
      

  2.   

    select 品名,[入库]= sum(case left(單號,2) when 'IN' then 數量 else 0 end),
    [出库]= sum(case left(單號,2) when 'OU' then 數量 else 0 end),
    from 表A group by 品名
      

  3.   

    select 單號,sum(數量) 
    from tab
    group by left(單號,2)
      

  4.   

    select 
    sum(case when left(單號,2)='IN' then 數量 else 0 end) as IN數量,
    sum(case when left(單號,2)='OU' then 數量 else 0 end) as OU數量
    from tablename
      

  5.   

    加多一列库存数量
    select 品名,[入库]= sum(case left(單號,2) when 'IN' then 數量 else 0 end),
    [出库]= sum(case left(單號,2) when 'OU' then 數量 else 0 end),
    [库存]=sum(case left(單號,2) when 'IN' then 數量 else -數量 end)
    from 表A group by 品名
      

  6.   

    謝啦 沒想到SUM裡面也可以加條件,跟我想象中的差不多一樣
      

  7.   

    --这样?create table T(單號 varchar(20), 品名 varchar(20), 數量 int)
    insert T select  'IN0012',    'abcddd',     20
    union all select 'IN0021',    'defsss',     30
    union all select 'IN0025',    'adfsdf',     32 
    union all select 'OU0012',    'asgasg',     32
    union all select 'OU0023',    'sdgsfsa',    50
    union all select 'OU0055',    'asdf3',      60select
    [IN数量]=sum(case when charindex('IN', 單號)>0 then 數量 else 0 end),
    [OU数量]=sum(case when charindex('OU', 單號)>0 then 數量 else 0 end)
    from T--result
    IN数量        OU数量        
    ----------- ----------- 
    82          142(1 row(s) affected)
      

  8.   

    單號       品名      數量
    IN0012    abcddd     20
    IN0021    defsss     30
    IN0025    adfsdf     32 
    OU0012    asgasg     32select left(單號,2) as 單號 , sum(数量) as 数量 from tb group by left(單號,2)
      

  9.   

    create table T(單號 varchar(20), 品名 varchar(20), 數量 int)
    insert T select  'IN0012',    'abcddd',     20
    union all select 'IN0021',    'defsss',     30
    union all select 'IN0025',    'adfsdf',     32 
    union all select 'OU0012',    'asgasg',     32
    union all select 'OU0023',    'sdgsfsa',    50
    union all select 'OU0055',    'asdf3',      60select left(單號,2) as 單號 , sum(數量) as 數量 from T group by left(單號,2)drop table t--result
    單號 數量          
    ---- ----------- 
    IN   82
    OU   142(所影响的行数为 2 行)