저는 SQL Server 2012를 사용하고 있습니다. 두 테이블 M_SALES & M_SALES_COUNTRY가 있습니다. M_SALES는 sales_id라는 기본 키를 포함합니다. M_SALES_COUNTRY에는 외래 키인 sales_id라는 필드도 있습니다. M_SALES_COUNTRY에는 country_code라는 필드도 있으며,이 필드는 null 일 수 있습니다.외래 키 테이블에서 단 하나의 레코드를 선택하십시오
그래서 M_SALES에는 고유 한 sale_id가 있습니다. M_SALES_COUNTRY는 동일한 판매 ID를 여러 개 포함 할 수 있습니다.
아래의 쿼리에서 M_SALES_COUNTRY의 레코드가 M_SALES 테이블의 각 sales_id에 대해 반환됩니다 (여러 개일 수 있지만 하나만 원할 수 있음). 그러나 추가 조건을 추가 할 수 있는지 알고 싶습니다.
M_SALES의 sale_id가 M_SALES_COUNTRY의 여러 sale_id를 참조하는 경우 country_code 필드가 null이 아닌 레코드를 반환하고 싶습니다. 모든 레코드 country_code가 널 (NULL)이면 널 (NULL)을 리턴합니다. 아래의 두 가지 간단한 예제를 참조하십시오.
sale_id country_code
AAA5555 null
AAA5555 null
AAA5555 D56
기록 나는 D56을 반환하고 싶습니다.
어떤 기록이 한 일이 반환됩니다 여기에 할 것
sale_id country_code
AAA5555 null
AAA5555 null
AAA5555 null
다음 예.
쿼리
select M_SALES.*, M_SALES_COUNTRY.*
from M_SALES cross apply
(
select top 1 M_SALES_COUNTRY.*
from M_SALES_COUNTRY
where M_SALES.sale_id = M_SALES_COUNTRY.sale_id
) MA_DEALS_COUNTRY
order by M_SALES.sale_id