0
내가 검색을 시도했지만 아마 비슷한 게시물을 찾을 수있는 언어가 부족 CASE 문에도 불구하고 만드는 중복 가입, 그래서 여기 내 기본적인 문제
(SQL Server 2016
) ...하나는
의 I 고유 식별하는 쿼리가 고객 조우 (1 line per 1 transaction
). 그런 다음 고객이 다른 테이블에서 구입 한 품목을 가져 오려고합니다. 그들이 다수 품목을 산 경우에, 결합 테이블은 그 품목의 순위를 나타 내기 위하여 "선"란 분야에 그 거래를 여러 번 열거한다.
표 2 :
Transaction--Line--Item
1000--1--Staples
1000--2--Stapler
1001--1--Paper
내가 할 내 쿼리의 최종 결과를 원하는 : 표 1 : 나는 현재 내 SELECT
에 CASE
문을 사용하여이 작업을 수행하려고
Customer--Transaction--Item1--Item2
John Doe--1000--Staples--Stapler
Jane Smith--1001--Paper--NULL
을 :
SELECT Table1.Customer,
Table1.Transaction,
CASE WHEN Table2.LINE = 1 THEN Table2.Item
ELSE NULL
END as Item1
CASE WHEN Table2.LINE = 2 THEN Table2.Item
ELSE NULL
END as Item2
FROM Table1 left outer join Table2 on Table1.transaction=Table2.transaction
이렇게하면 올바른 결과를 얻을 수 있습니다. 들, 많은 참여로 하나가 중복 행
John Doe--1000--Staples--NULL
John Doe--1000--NULL--Stapler
Jane Smith--10001--Paper--NULL
에 이들을 배치된다는 점을 제외하고 나는 하나의 행에
John Doe
모두를 원한다. 초기 쿼리 후 두 개의 별도의 업데이트 문을 실행하는 것 외에는 원하는 결과를 얻는 방법을 모르겠습니다. 도움?
(못된 형식에 대한 사과) 아래
제안 해 주셔서 감사합니다. WHERE 절은 Line = 1이 아닌 조회에서 제외됩니다. 아마도 훨씬 복잡한 쿼리를 단순화하고 있다고 덧붙여 야합니다. 적어도 7 개의 다른 왼쪽 조인이 있지만 이것은 여러 결과 문제에 대해 하나의 트랜잭션이있는 유일한 것입니다. – DMC97
다른 옵션은 다음과 같은 것이 있습니다. '(트랜잭션 = table.transaction 및 Line = 1 인 Table2의 항목 선택) item1, (트랜잭션이 table.transaction 및 Line 인 항목 선택 = 2) 끝은 항목 2, –