[SQL] 두 개의 SELECT 문 결과를 가입
SQL두 개의 SELECT 문 결과를 가입
그것은 하나 개의 문장에 2 SQL SELECT 문의 결과에 가입 할 수 있습니까? 나는 마감 시간에 각 레코드는 별도의 작업은 작업의 데이터베이스가 (그리고 시작부터 마감 일의 단지 INT 인 PALT을. 나이는 일의 INT 번호도 있습니다.)
나는 테이블의 각 사람, 그들이 가지고있는 작업의 수, 그리고 그들이 가지고 LATE 작업의 수를 가진 테이블을 갖고 싶어 (있는 경우).
나는 그렇게처럼 쉽게 별도의 테이블에있는 데이터를 얻을 수 있습니다 :
SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks
데이터를 같이 반환 :
ks # Tasks
person1 7
person2 3
그리고 내가 가진 :
SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks
이는 반환 :
ks # Late
person1 1
person2 1
그리고합니다 (KS에 의해)이 두 SELECT 문의 결과에 가입 할
나는 임시 테이블을 사용하지 않도록하기 위해 노력하고있어,하지만이 작업을 수행 할 수있는 유일한 실용적인 방법이라면, 좀 더 이런 식으로 임시 테이블을 사용하는 방법에 대해 알고 싶습니다.
또한 조건부 충족시키는 행 수를 어떤 종류의 ()를하려고 노력하지만, 나도 그렇게하는 방법을 알아낼 수 없었다. 그것이 가능하다면, 그 역시 작동합니다.
추가: 죄송합니다, 나는 나의 결과는 KS, 작업 및 후기에 열을 갖고 싶어
KS # Tasks # Late
person1 7 1
person2 3 1
person3 2 0 (or null)
또한, 나는 사람이 그들이 더 늦게 작업을 수행하지 못할 경우에도 표시하고 싶습니다.
SUM (CASE WHEN 시대> Palt THEN 1 ELSE 0 END) 늦은 이 대답을 잘 덕분에 작품!
왼쪽을 사용하여도 일 두 SELECT 문은 또한 작동을 가입 가입, 나는 이런 식으로 다수의 선택에 가입하는 방법을 이제 이해
해결법
-
==============================
1.
SELECT t1.ks, t1.[# Tasks], COALESCE(t2.[# Late], 0) AS [# Late] FROM (SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1 LEFT JOIN (SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2 ON (t1.ks = t2.ks);
-
==============================
2.이 같은 시도 :
이 같은 시도 :
SELECT * FROM (SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1 INNER JOIN (SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2 ON t1.ks = t2.ks
-
==============================
3.사용 UNION :
사용 UNION :
SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks UNION SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks
또는 UNION ALL은 중복을 원하는 경우 :
SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks UNION ALL SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks
-
==============================
4.당신은이에 대한 UNION ALL 키워드를 사용할 수 있습니다.
당신은이에 대한 UNION ALL 키워드를 사용할 수 있습니다.
여기에 T-SQL http://msdn.microsoft.com/en-us/library/ms180026.aspx에서 그것을 할 수있는 MSDN의 문서입니다
UNION ALL은 - 결과 집합을 결합
셋트 연합과 나던 출력 중복 값과 같은 UNION-합니까 뭔가
예와 차이 : http://sql-plsql.blogspot.in/2010/05/difference-between-union-union-all.html
-
==============================
5.나이와 Palt가 열이 같은 테이블에있는 경우, 당신은 COUNT (*) 모든 작업을이 같은 말에야 것들을 요약 할 수 있습니다 :
나이와 Palt가 열이 같은 테이블에있는 경우, 당신은 COUNT (*) 모든 작업을이 같은 말에야 것들을 요약 할 수 있습니다 :
select ks, count(*) tasks, sum(case when Age > Palt then 1 end) late from Table group by ks
from https://stackoverflow.com/questions/10538539/join-two-select-statement-results by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] PostgreSQL의에서 테이블의 행 수를 발견하는 빠른 방법 (0) | 2020.04.03 |
---|---|
[SQL] JSON에 ResultSet의 대부분의 효율적인 변환? (0) | 2020.04.03 |
[SQL] SQL 서버 - SQL 스크립트의 정지 또는 휴식 실행 (0) | 2020.04.03 |
[SQL] 쿼리에 의해 덤프 MYSQL (0) | 2020.04.03 |
[SQL] OPTION (RECOMPILE)는 항상 빠른입니다; 왜? (0) | 2020.04.03 |