select IsNull(sum(case UnitProjectName when '道路工程' then mangeSum else 0 end), 0) AS '0道路工程RoadNum', 
       IsNull(sum(case UnitProjectName when '结构工程' then mangeSum else 0 end), 0) AS '0结构工程RoadNum', 
       IsNull(sum(case UnitProjectName+type when '道路工程0' then mangeSum*RationPrice else 0 end), 0) AS '0道路工程RoadPrice1', 
       IsNull(sum(case UnitProjectName+type when '道路工程1' then mangeSum*RationPrice else 0 end), 0) AS '0道路工程RoadPrice2', 
       IsNull(sum(case UnitProjectName+type when '结构工程0' then mangeSum*RationPrice else 0 end), 0) AS '0结构工程RoadPrice1', 
       IsNull(sum(case UnitProjectName+type when '结构工程1' then mangeSum*RationPrice else 0 end), 0) AS '0结构工程RoadPrice2',
from 视图
where roadtype='0' and  year='2005' and month='6' and
      (UnitProjectName ='结构工程' or UnitProjectName = '道路工程') and 
      (type = '0' or type = '1') and 
      (CreatedBy = '2005063000000049' or CreatedBy = '2005063000000051')

解决方案 »

  1.   

    select IsNull(sum(case UnitProjectName when '道路工程' then mangeSum else 0 end), 0) AS '0道路工程RoadNum', 
           IsNull(sum(case UnitProjectName when '结构工程' then mangeSum else 0 end), 0) AS '0结构工程RoadNum', 
           IsNull(sum(case UnitProjectName+type when '道路工程0' then mangeSum*RationPrice else 0 end), 0) AS '0道路工程RoadPrice1', 
           IsNull(sum(case UnitProjectName+type when '道路工程1' then mangeSum*RationPrice else 0 end), 0) AS '0道路工程RoadPrice2', 
           IsNull(sum(case UnitProjectName+type when '结构工程0' then mangeSum*RationPrice else 0 end), 0) AS '0结构工程RoadPrice1', 
           IsNull(sum(case UnitProjectName+type when '结构工程1' then mangeSum*RationPrice else 0 end), 0) AS '0结构工程RoadPrice2',
    from 视图
    where roadtype='0' and  year='2005' and month='6' and
          (UnitProjectName ='结构工程' or UnitProjectName = '道路工程') and 
          (type = '0' or type = '1') and 
          (CreatedBy = '2005063000000049' or CreatedBy = '2005063000000051')
      

  2.   

    呵呵!不就是 行变列的两种经典方法吗!!!关键是你要先把数据过滤掉!CreatedBy = '2005063000000049' or CreatedBy = '2005063000000051'这些不应该写道没一个子查询中去了,