所有的
有两张桌子,无论新旧。
[New]
Machine Date
A Apr 16
B Apr 16
A Apr 15
C Apr 15
A Apr 14
[Old]
Machine Date
A Apr 12
B Apr 10
A Apr 09
C Apr 08
A Apr 07
我想带上前2机器的日期> 2009年4月
我可以为一个表构建查询,但不知道如何合并两个表。
select top 2 machine, count(machine)
from new
where date > "Apr 09"
group by machine
它将在一个语句中使用两个选择查询但不知道该怎么做。
任何人都可以为此提出建议吗?
答案 0 :(得分:2)
如果您经常这样做,我建议您创建一个显示两个表的视图:
CREATE VIEW AllData AS
SELECT * FROM [New]
UNION ALL
SELECT * FROM [Old]
然后你可以从视图中选择并进行你想要的任何过滤:
select top 2 machine, count(machine)
from AllData
where date > "Apr 09"
group by machine
另外,我不确定你在这里展示的数据是否只是一个例子,但是我要小心你使用的日期格式 - 因为你是基于一个字符串过滤的,几乎一年中的每个日期都将满足该条件,包括“Jan 01”。要更新它,您可能需要考虑使用实际的日期类型。
答案 1 :(得分:1)
您似乎想要的查询是:
select top 2 machine, count(machine)
from ((select * from [New]
) union all
(select * from [Old]
)
) t
where date > "Apr 09"
group by machine
order by count(machine) desc
使用top
时,您应始终拥有order by
。否则,结果是不确定的。我猜你想要两个计数最高的人。