select 公司名称,项目名称,
min(case when 类别='1' then 1 else '1' end) 类别一, 
sum(case when 类别='1' then 金额 else 0 end) 金额1,
min(case when 类别='2' then 1 else '1' end) 类别二, 
sum(case when 类别='2' then 金额 else 0 end) 金额2,
min(case when 类别='3' then 1 else '1' end) 类别三, 
sum(case when 类别='3' then 金额 else 0 end) 金额3,
日期,状态
group by 公司名称,项目名称,日期,状态

解决方案 »

  1.   

    不好说, 可以参考联机帮助里面关于:group by以及 case when 的用法
      

  2.   

    接着上面的问题问,不过这次表的结构改了一下,
    表一:
    公司名称  项目名称  大类   小类     金额1    金额2   金额3    日期     状态      
    公司一     项目一    项目   收入    100       200     250    200506    0
    公司一     项目一    项目   支出    140       300     200    200506    1
    公司一     项目一    项目   收入    100       400            200505    0
    公司一               公司   收入    200               400    200506    0
    公司一               公司   支出    100       200            200506    0要做的工作,把表一中公司名称、项目名称、日期相同的记录的项目收入、项目支出、公司收入、公司支出中的金额1,金额2,金额3...合并为一条记录,放入表二中。表二:公司名称 项目名称 项目收入1 项目收入2  项目收入3  项目支出1 项目支出2 公司支出1 ..日期    
    公司一     项目一    100       200          250    140        300       0      .. 200506
    公司一               0         0            0       0          0        100    ..  200506请问这条sql语句怎么写,谢谢!
      

  3.   

    phantomMan(全力转向 .net 和 数据库方向) :你在吗,能不能帮帮我