0

全て

テーブルは新旧2つ。

[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 

2009 年 4 月以降の上位 2 台のマシンを持ち込みたい

1 つのテーブルに対してクエリを作成できますが、2 つのテーブルを統合する方法がわかりません。

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

1 つのステートメントで 2 つの選択クエリが使用されますが、その方法がわかりません。

誰でもこれについてアドバイスできますか?

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. それ以外の場合、結果は不確定です。カウントが最も高い2つが必要だと思います。

于 2013-04-16T14:29:10.550 に答える