yckn_value, yckn_tjsj, yckn_sf, yckn_dw 都是yckn_sum表中的字段运行
select sum(yckn_value)str1 from yckn_sum where yckn_tjsj = '2012' and yckn_sf = 1 and yckn_dw = 1
显示结果为
   str1
1    3运行
select sum(yckn_value)str2 from yckn_sum where yckn_tjsj = '2012' and yckn_sf = 2 and yckn_dw = 1
显示结果为
   str2
1    1运行
select sum(yckn_value)str1 from yckn_sum where yckn_tjsj = '2012' and yckn_sf = 1 and yckn_dw = 1 union
select sum(yckn_value)str2 from yckn_sum where yckn_tjsj = '2012' and yckn_sf = 2 and yckn_dw = 1显示的结果为
   str1
1    1
2    3运行
select sum(yckn_value)str1 from yckn_sum where yckn_tjsj = '2012' and yckn_sf = 1 and yckn_dw = 1 union all
select sum(yckn_value)str2 from yckn_sum where yckn_tjsj = '2012' and yckn_sf = 2 and yckn_dw = 1显示的结果为
   str1
1    3
2    1想让str1和str2都显示出来,应该怎么写?

解决方案 »

  1.   


    select str1,str2 from
    (
    select sum(yckn_value)str1 from yckn_sum where yckn_tjsj = '2012' and yckn_sf = 1 and yckn_dw = 1 union all
    select sum(yckn_value)str2 from yckn_sum where yckn_tjsj = '2012' and yckn_sf = 2 and yckn_dw = 1
    )t
      

  2.   

    SELECT SUM(str1) str1,SUM(str2)str2
    FROM (
    select sum(yckn_value)str1,0 AS str2 from yckn_sum where yckn_tjsj = '2012' and yckn_sf = 1 and yckn_dw = 1 
    union all
    select 0,sum(yckn_value)str2 from yckn_sum where yckn_tjsj = '2012' and yckn_sf = 2 and yckn_dw = 1
    )a
      

  3.   


    运行后提示
    服务器: 消息 207,级别 16,状态 3,行 1
    列名 'str2' 无效。55555555
      

  4.   


    union all 两个select后面查询字段要相同。可以象2楼那样补全列再union all
      

  5.   

    如果你的数据表结构相对稳定,那就类推写上去就可以了,如果动态的,那有点困难,去FAQ贴那里找一下吧
    http://topic.csdn.net/u/20080614/17/22e73f33-f071-46dc-b9bf-321204b1656f.html
      

  6.   


    如果同样是两个查询结果联合的话,还是用union all,把所有要查询到的列都写出来,注意union all连接的两个查询中出现的列必须对应
      

  7.   

    谢谢 DBA_Huangzj 和 galenkeny自己再研究下吧