내가 3 개 테이블과 SQL 데이터베이스가 결과 (각 행이 고유) SQL - 쿼리 MAX 날짜의 결과를보고하거나 NULL이
Customer notes
마스터 데이터를 보유,
Customer record
테이블을, 각 음표 데이터/시간 스탬프Product
테이블, 고객이 구입했습니다 보여주는 (많은 고객 당 메모 또는 전혀 없음이있을 수 있습니다)있는표 제품 : tbl_Customer_ 기록
CustomerID를 ---- 회사 이름 ----- 회사 세그먼트 ----- 프로모션 코드테이블 : tbl_Customer_Notes
CustomerID를 ---- 참고 ----- 작성 날짜테이블 :
이 의 CustomerID가 ---- 제품 카테고리가
내가 원하는 것은 당겨하는 것입니다 tbl_Customer_Products 최신 노트 만 포함하는 고객 레코드 목록이므로 여러 노트가있는 경우 중복되는 줄이 없습니다. 그러나 나는 또한 주 없음가있는 경우 고객 기록을 포함시키기를 원합니다. SELECT MAX 함수를 사용하여이 첫 번째 부분을 얻었고 잘 작동합니다. 문제는 마지막 코드 줄에 OR = NULL 절을 추가 할 때입니다. 이것은 작동하지 않으며 해결책을 찾을 수 없습니다.
모든 의견을 크게 높이세요!
SELECT
[tbl_Customer_Records].[CustomerID],
[tbl_Customer_Records].[Company Name],
[tbl_Customer_Records].[Company Segment],
[tbl_Customer_Records].[Promo Code],
[tbl_Customer_Notes].[Note],
[tbl_Customer_Products].[Product Category]
FROM
tbl_Customer_Records
LEFT OUTER JOIN tbl_Customer_Notes
ON tbl_Customer_Records.CustomerID = tbl_Customer_Notes.CustomerID
LEFT OUTER JOIN tbl_Customer_Products
ON tbl_Customer_Records.CustomerID = tbl_Customer_Products.CustomerID
WHERE
[Product Category] in ('Nuts','Bolts','Screws','Spanners')
AND
[Created Date] in (SELECT MAX ([Created Date]) FROM tbl.Customer_Notes GROUP BY [CustomerID])
OR tbl_Customer_Note.Note is null
답변 해 주셔서 감사합니다.서투른 컬럼 이름에 대해 언급 할 때, 장래에 염두에 두겠다. 흥미롭게도 첫 번째 솔루션은 4,315 개의 결과를, 두 번째는 4,393 개의 결과를 반환합니다. 이는 Deepshikha의 솔루션과 동일합니다. 두 가지 제안을 해주셔서 감사 드리며, 향후 사용을 위해 구문을 기록하고 있습니다. 많은 시간을내어 도와 주셔서 감사합니다! Daniel – user1811852
max (Created_Date)가 하나 이상인 레코드가있는 경우 첫 번째 레코드가 임의의 레코드를 반환합니다 –
아, 이해합니다. 실제로 동일한 CreatedDate에 여러 노트가 있으므로 첫 번째 솔루션이이 상황에서 더 잘 작동합니다. 다시 한번 감사드립니다. (수락 된 대답이 변경됨). – user1811852