[SQL] 하나 개의 출력을위한 두 개의 테이블을 결합
SQL하나 개의 출력을위한 두 개의 테이블을 결합
나는 두 개의 테이블을 가지고 말 :
KnownHours :
ChargeNum CategoryID Month Hours 111111 1 2/1/09 10 111111 1 3/1/09 30 111111 1 4/1/09 50 222222 1 3/1/09 40 111111 2 4/1/09 50
UnknownHours :
ChargeNum Month Hours 111111 2/1/09 70 111111 3/1/09 40.5 222222 7/1/09 25.5
내 예상 결과는 다음과 같다 있도록 단일 데이터 테이블에, 월을 무시하고,이 시간 그룹에 필요
ChargeNum CategoryID Hours 111111 1 90 111111 2 50 111111 Unknown 110.5 222222 1 40 222222 Unknown 25.5
나는 이것을 알아낼 수 없습니다. 어떤 도움을 주시면 감사하겠습니다!
편집 : 각 ChargeNum / 분류 조합에 대한 시간을 합계해야합니다. 나는 이것을 반영하기 위해 샘플 데이터를 업데이트했습니다.
해결법
-
==============================
1.두 쿼리의 결과를 결합하는 UNION을 사용해야합니다. 귀하의 경우 :
두 쿼리의 결과를 결합하는 UNION을 사용해야합니다. 귀하의 경우 :
SELECT ChargeNum, CategoryID, SUM(Hours) FROM KnownHours GROUP BY ChargeNum, CategoryID UNION ALL SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours) FROM UnknownHours GROUP BY ChargeNum
주 - 위 같이 UNION ALL을 사용하는 경우 더 느린가 중복 검사를하지 않습니다 별도로 두 개의 쿼리를 실행하는 것보다입니다.
-
==============================
2.당신의 예상 출력에서 두 번째 마지막 행의 합이 잘못된있어, 당신의 테이블의 데이터에 따라 40 수 있지만 여기에 쿼리입니다한다 :
당신의 예상 출력에서 두 번째 마지막 행의 합이 잘못된있어, 당신의 테이블의 데이터에 따라 40 수 있지만 여기에 쿼리입니다한다 :
Select ChargeNum, CategoryId, Sum(Hours) From ( Select ChargeNum, CategoryId, Hours From KnownHours Union Select ChargeNum, 'Unknown' As CategoryId, Hours From UnknownHours ) As a Group By ChargeNum, CategoryId Order By ChargeNum, CategoryId
그리고 여기 출력은 :
ChargeNum CategoryId ---------- ---------- ---------------------- 111111 1 40 111111 2 50 111111 Unknown 70 222222 1 40 222222 Unknown 25.5
-
==============================
3.우리는 단계 더 이것을 가지고 내가 50 시간이 이상 ... 나는이 시도했다가 결합 될 때 행을 참조하고 싶은 말은하지만 SumHours를 찾을 수 없다는 오류를받을 수 ...
우리는 단계 더 이것을 가지고 내가 50 시간이 이상 ... 나는이 시도했다가 결합 될 때 행을 참조하고 싶은 말은하지만 SumHours를 찾을 수 없다는 오류를받을 수 ...
Select ChargeNum, CategoryId, Sum(Hours) As SumHours From ( Select ChargeNum, CategoryId, Hours From KnownHours Union Select ChargeNum, 'Unknown' As CategoryId, Hours From UnknownHours ) As a WHERE (SumHours>=50) Group By ChargeNum, CategoryId Order By ChargeNum, CategoryId
내가 시도 그래서
Select ChargeNum, CategoryId, Sum(Hours) As SumHours From ( Select ChargeNum, CategoryId, Hours From KnownHours Union Select ChargeNum, 'Unknown' As CategoryId, Hours From UnknownHours ) As a WHERE (Hours>=50) Group By ChargeNum, CategoryId Order By ChargeNum, CategoryId
하지만이 두 테이블에 시간의 합계를 제공하지 않습니다 ...
from https://stackoverflow.com/questions/1227835/combine-two-tables-for-one-output by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 MySQL의에 고유 ID를 생성하는? (0) | 2020.05.01 |
---|---|
[SQL] 집계 함수와 SQL GROUP BY CASE 문 (0) | 2020.05.01 |
[SQL] SSIS 패키지는 임시 테이블의 메타 데이터를 가져 싶지 않다 (0) | 2020.05.01 |
[SQL] PIP "심각한 오류 C1083을 mysqlclient 반환을 설치하지 : 파일을 열 수 없습니다 : '에서 mysql.h를': 그런 파일이나 디렉토리 (0) | 2020.05.01 |
[SQL] 는 SQL 쿼리 알려진 두 문자열 사이의 문자열을 선택합니다 (0) | 2020.05.01 |