0

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

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 之间迷失了方向,我确信这样做非常简单。非常感谢。

4

3 回答 3

5

您需要加入表,而不是联合它们

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
于 2012-08-03T08:57:53.500 回答
1
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

连接表以将彼此相邻。

联合表将逐个放置。

于 2012-08-03T08:57:58.117 回答
1

一种方法是使用sumtotal 一系列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
于 2012-08-03T09:00:58.600 回答