두 번째 테이블의 행에 우선 순위를 부여하여 기준에 따라 두 테이블을 병합하는 쿼리 만들기

ZolVas

두 개의 MS Access 테이블이 있습니다.

table1
ID  Country     Dat         Val
1   Australia   01.10.2021  10
2   Canada      01.10.2021  100
3   Japan       01.10.2021  1000
4   Australia   02.10.2021  20
5   Canada      02.10.2021  200
6   Japan       02.10.2021  2000

table2
ID  Country     Dat         Val
1   Canada      01.10.2021  50000
2   Greece      01.10.2021  50100
3   Canada      02.10.2021  60000
4   Greece      02.10.2021  60100

이 SQL 코드를 사용 하면 10 개의 행을 제공하는 두 개의 테이블병합 할 수 있습니다 .

   SELECT table2.Dat,
          table2.Country,
          table2.Val
     FROM table2
LEFT JOIN table1
       ON (table1.Dat = table2.Dat)
      AND (table1.Country = table2.Country)

UNION ALL

   SELECT table1.Dat,
          table1.Country,
          table1.Val
     FROM table1
LEFT JOIN table2
       ON (table1.Dat = table2.Dat)
      AND (table1.Country = table2.Country)

 ORDER BY table2.Dat,
          table2.Country;

그리고 "날짜"및 "국가"기준에 따라 중복을 제공합니다.

질문

table1과 table2의 "Date"와 "Country"가 동일한 경우 두 테이블을 병합하려는 경우 코드가 어떻게 표시되어야하는지 궁금합니다. 둘 다가 아닌 table2 행이 선택됩니다.

즉, 얼마나 걸릴 표 1과 표 2에서 모든 고유 행이 일치하지 않는 기준 "날짜"와 "나라",뿐만 아니라주고 우선 순위에 표 2 두 테이블의 행이 일치 기준 "날짜"와 "나라를" ?

( "날짜 + 국가"번들은 각 테이블 내에서 고유합니다. 즉, 하나의 테이블에 "데이터 + 국가"가 하나만 있습니다.)

즉, 결과를 다음과 같이 표시 하기 위해 어떤 쿼리를 사용할 수 있습니까? 즉, 날짜 + 국가 중복이없는 8 개 행?

Expected Result
Dat         Country     Val
01.10.2021  Australia   10
01.10.2021  Canada      50000
01.10.2021  Greece      50100
01.10.2021  Japan       1000
02.10.2021  Australia   20
02.10.2021  Canada      60000
02.10.2021  Greece      60100
02.10.2021  Japan       2000

그리고 이와 같은 몇 가지 기준에 따라 테이블을 병합 하기 위해 이러한 SQL 스크립트를 만드는 좋은 방법은 무엇일까요?

Forpas

필요한 것은 UNION ALL2 개의 테이블과 NOT EXISTS다음 WHERE항목에 사용 하는 것 입니다 table1.

SELECT t1.Dat, t1.Country,  t1.Val FROM table1 AS t1
WHERE NOT EXISTS (SELECT 1 FROM table2 AS t2 WHERE t2.Country = t1.Country AND t2.Dat = t1.Dat)
UNION ALL
SELECT Dat, Country, Val FROM table2
ORDER BY Dat, Country

결과 :

Dat         Country     Val
1/10/2021   Australia   10
1/10/2021   Canada      50000
1/10/2021   Greece      50100
1/10/2021   japan       1000
2/10/2021   Australia   20
2/10/2021   Canada      60000
2/10/2021   Greece      60100
2/10/2021   Japan       2000

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관