兩列

2012-08-03 22 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