某表结构
星期   日期      本季  数量 金额 上季   数量 金额
星期1  20010101  冬季   10        秋季   8
星期2  20010102  冬季   10        秋季   8
.....
星期1  20010501  夏季   10        春季   8
星期2  20010502  夏季   10        春季   8
.....我想要的输出结果是
                   冬季        秋季       夏季       春季
星期   日期     数量 金额   数量 金额   数量 金额  数量 金额
星期1  20010101  10          8
星期2  20010102  10          8
.....
星期1  20010501                          10          8
星期2  20010502                          10          8

解决方案 »

  1.   

    某表结构
    星期   日期      本季  数量1 金额1 上季   数量2 金额2select 星期, 日期,冬季数量 = (case 本季 when '冬季' then 数量1 else 0 end)
    ,冬季金额 = (case 本季 when '冬季' then 金额1 else 0 end)
    ,秋季数量 = (case 上季 when '秋季' then 数量2 else 0 end)
    ,秋季金额 = (case 上季 when '秋季' then 金额2 else 0 end)
    ,夏季数量 = (case 本季 when '夏季' then 数量1 else 0 end)
    ,夏季金额 = (case 本季 when '夏季' then 金额1 else 0 end)
    ,春季数量 = (case 上季 when '春季' then 数量2 else 0 end)
    ,春季金额 = (case 上季 when '春季' then 金额2 else 0 end)
    from table
      

  2.   

    declare @t table(星期 char(8),日期 char(8),本季 char(6), 数量1 int, 金额1 int, 上季 char(6), 数量2 int, 金额2 int)
    insert @t
    select '星期1','20010101','冬季',10,0,'秋季',8,0 union all
    select '星期2','20010102','冬季',10,0,'秋季',8,0 union all
    select '星期1','20010501','夏季',10,0,'春季',8,0 union all
    select '星期2','20010502','夏季',10,0,'春季',8,0
    select 星期, 日期,冬季数量 = (case 本季 when '冬季' then 数量1 else 0 end)
    ,冬季金额 = (case 本季 when '冬季' then 金额1 else 0 end)
    ,秋季数量 = (case 上季 when '秋季' then 数量2 else 0 end)
    ,秋季金额 = (case 上季 when '秋季' then 金额2 else 0 end)
    ,夏季数量 = (case 本季 when '夏季' then 数量1 else 0 end)
    ,夏季金额 = (case 本季 when '夏季' then 金额1 else 0 end)
    ,春季数量 = (case 上季 when '春季' then 数量2 else 0 end)
    ,春季金额 = (case 上季 when '春季' then 金额2 else 0 end)
    from @t
    /*星期       日期       冬季数量        冬季金额        秋季数量        秋季金额        夏季数量        夏季金额        春季数量        春季金额        
    -------- -------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- 
    星期1      20010101 10          0           8           0           0           0           0           0
    星期2      20010102 10          0           8           0           0           0           0           0
    星期1      20010501 0           0           0           0           10          0           8           0
    星期2      20010502 0           0           0           0           10          0           8           0(所影响的行数为 4 行)*/