2013-04-16 4 views
0

ALL두 테이블을 통합하는 SQL 쿼리를 작성하는 방법은 무엇입니까?

새로운 테이블과 오래된 테이블이 있습니다.

[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 

나는 일> 4월 9일

내가 하나 개의 테이블에 대한 쿼리를 작성하지만 두 테이블을 통합하는 방법을 잘 모릅니다 수 있습니다 탑이 기계를 가지고 싶어.

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

한 명령문에서 두 개의 선택 쿼리가 사용되지만 수행 방법은 알 수 없습니다.

누구나 조언 해 줄 수 있습니까?

답변

1

당신이 원하는 것처럼 보인다 쿼리는 다음과 같습니다 당신이 top를 사용하는 경우, 당신은 항상 order by을 가져야한다

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 

. 그렇지 않으면 결과가 불확실합니다. 나는 당신이 가장 높은 세를 가진 2를 원한다고 생각하고 있습니다. 자주 이런 일을 할 것입니다 경우

+0

대단하다 !!! 고마워요! 이건 내가 만들고 싶은거야. – user2286858

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"을 포함하여 그 조건을 만족시킬 것입니다. 업데이트하려면 실제 날짜 유형을 사용하는 것이 좋습니다.

+0

고마워 !! 이것은보기를 만든 후에 쿼리를 생성하는 데 도움이됩니다 !! – user2286858

관련 문제