两列

2012-08-03 21 views
0

我有两个查询来获得数据加入两个SELECT在SQL的,我想在同一个表,以显示他们两个:两列

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,我相信这是非常简单的做到这一点。非常感谢你。

回答

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 

加入表把彼此相邻。

联合表格将彼此相连。

+0

上a.Text = b.Text – 2012-08-03 08:59:17

+0

@JoeGJoseph'USING'是优选的。 – Ariel 2012-08-03 08:59:31

+0

谢谢Ariel ..我不知道 – 2012-08-03 09:05:03

2

你需要加入的表,而不是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

执行此操作的一种方法是使用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 
+0

如果'status'上有一个索引,那么使用连接会比这更快*。如果没有索引,那并不重要。 – Ariel 2012-08-03 09:02:15

+0

是的 - 这种情况对于这种方法来说有点简单,但是在条件更复杂的情况下它很有用。 – 2012-08-03 09:03:18