在SQL中将两个SELECT连接成两列

时间:2012-08-03 08:54:33

标签: sql select join union

我有两个查询来获取数据,我想在同一个表中显示它们:

select aaa.Text, count(*)
  from XXXXX main inner join XXXXXX
on XXXXX
 where status = A
 group XXXXX
 order by aaa.Text

   Text1    111111  
   Text2    222222 
   Text3    333333  

select aaa.Text, count(*)
  from XXXXX main inner join XXXXXX
on XXXXX
 where status = B
 group XXXXX
 order by aaa.Text

  Text1    444444
  Text2    555555 
  Text3    666666

我只想在同一个表中用两列显示数据

  Text1    111111     444444    
  Text2    222222     555555
  Text3    333333     666666

我是SQL的新手,我在使用UNION,UNION ALL,SELECT INTO之间迷路了,我相信这样做非常简单。非常感谢你。

3 个答案:

答案 0 :(得分:3)

您需要加入表格,而不是UNION它们

SELECT a.text, a.count, b.count
FROM
( 
    select Text, count(*)  
    from XXXXX main inner join XXXXXX  
    on XXXXX  
    where status = A  
    group XXXXX  
    order XXXXX  
) a
INNER JOIN
( 
     select Text, count(*)   
     from XXXXX main inner join XXXXXX   
     on XXXXX   
     where status = B   
     group XXXXX   
     order XXXXX   
) b
ON a.text=b.text

答案 1 :(得分:1)

执行此操作的一种方法是在标准匹配的情况下使用sum一系列1

例如:

select Text, 
    sum(case when status="A" then 1 else 0 end),
    sum(case when status="B" then 1 else 0 end)
from XXXXX main inner join XXXXXX
on XXXXX
group XXXXX
order XXXXX

答案 2 :(得分:0)

select Text, a.cnt, b.cnt from

(select Text, count(*) cnt
from XXXXX main inner join XXXXXX
on XXXXX
where status = A
group XXXXX) a

JOIN

(select Text, count(*) cnt
from XXXXX main inner join XXXXXX
on XXXXX
where status = B
group XXXXX) b

USING Text
ORDER xxxxx

加入表格,将放在一起。

用于将放在彼此之后的联合表。