数据库access 中有一个交叉表,可以实现,在建查询的时候,就可以建个交叉表,在server中就太麻烦了,至少7.0中没有这种功能,2000中有没有就不太清楚了。

解决方案 »

  1.   

    select 合同号 ,
    case when sum(case when 工种='a' then 数量 else 0 end)>0 then sum(case when 工种='a' then 数量 else 0 end) else '' end as '数量',
    case when sum(case when 工种='a' then 单价 else 0 end)>0 then sum(case when 工种='a' then 单价 else 0 end) else '' end as '单价',
    case when sum(case when 工种='b' then 数量 else 0 end)>0 then sum(case when 工种='b' then 数量 else 0 end) else '' end as '数量',
    case when sum(case when 工种='b' then 单价 else 0 end)>0 then sum(case when 工种='b' then 单价 else 0 end) else '' end as '单价',
    case when sum(case when 工种='c' then 数量 else 0 end)>0 then sum(case when 工种='c' then 数量 else 0 end) else '' end as '数量',
    case when sum(case when 工种='c' then 单价 else 0 end)>0 then sum(case when 工种='c' then 单价 else 0 end) else '' end as '单价',
    case when sum(case when 工种='d' then 数量 else 0 end)>0 then sum(case when 工种='d' then 数量 else 0 end) else '' end as '数量',
    case when sum(case when 工种='d' then 单价 else 0 end)>0 then sum(case when 工种='d' then 单价 else 0 end) else '' end as '单价'
    from table1 a left outer join table2 b on a.gh=b.gh
    group by a.gh,合同号
      

  2.   

    同意newly_ignorant(不学无术) 的思路