0

全部

有两张桌子,新的和旧的。

[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 台机器,日期 > 4 月 9 日

我可以为一个表构建查询,但不知道如何合并两个表。

select top 2 machine, count(machine)
from new
where date > "Apr 09"
group by machine

它会在一个语句中使用两个选择查询,但不知道该怎么做。

任何人都可以为此提供建议吗?

4

2 回答 2

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”。要更新它,您可能需要考虑使用实际的日期类型。

于 2013-04-16T14:40:53.337 回答
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. 否则,结果是不确定的。我猜你想要数量最多的两个。

于 2013-04-16T14:29:10.550 回答