两列
问题描述:
我有两个查询来获得数据加入两个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,我相信这是非常简单的做到这一点。非常感谢你。
答
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
加入表把列彼此相邻。
联合表格将行彼此相连。
答
你需要加入的表,而不是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
答
执行此操作的一种方法是使用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
上a.Text = b.Text – 2012-08-03 08:59:17
@JoeGJoseph'USING'是优选的。 – Ariel 2012-08-03 08:59:31
谢谢Ariel ..我不知道 – 2012-08-03 09:05:03