programing

두 SELECT 문 결과 결합

bestprogram 2023. 4. 22. 10:57

두 SELECT 문 결과 결합

2개의 sql의 결과에 참여할 수 있습니까?SELECT하나의 스테이트먼트에 대해 설명하시겠습니까?각 레코드가 개별 작업이고 마감일이 있는 작업(및PALT이건 그냥...INT시작부터 마감까지 일수입니다. Age또한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

그리고 저는 이 두 가지 결과에 동참하고 싶습니다.select(에 의한) 스테이트먼트KS)

저는 임시 테이블을 사용하지 않으려고 합니다만, 그것이 유일한 실용적인 방법이라면, 이 방법으로 임시 테이블을 사용하는 방법에 대해 더 알고 싶습니다.

저도 뭔가 하려고 했는데count()조건을 만족시키는 행이 있는데도 어떻게 해야 할지 모르겠어요.그게 가능하다면 그것도 효과가 있을 거예요.

부록:죄송합니다. 결과에 다음 열을 붙이고 싶습니다.KS,Tasks,그리고.Late

KS        # Tasks   # Late
person1   7         1
person2   3         1
person3   2         0  (or null)

또, 늦는 일이 없어도 사람이 와 주었으면 합니다.

SUM(CASE WHEN Age > Palt THEN 1 ELSE 0 END) Late
잘 작동합니다. 이 답변 감사합니다!

2개의 선택 스테이트먼트도 동작합니다.LEFT JOIN가입하는 것도 효과가 있고, 저는 이제 어떻게 여러 개에 가입할 수 있는지 이해했습니다.select이런 식으로

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);

다음과 같은 방법을 사용해 보십시오.

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

사용하다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

Age와 Palt가 같은 표의 열인 경우 다음과 같이 모든 작업을 카운트(*)하고 늦은 작업만 집계할 수 있습니다.

select ks,
       count(*) tasks,
       sum(case when Age > Palt then 1 end) late
  from Table
 group by ks

를 사용할 수 있습니다.UNION ALL키워드를 지정합니다.

T-SQL http://msdn.microsoft.com/en-us/library/ms180026.aspx에서 이를 수행하기 위한 MSDN 문서는 다음과 같습니다.

UNION ALL - 결과 세트를 결합합니다.

UNION - Set Union과 같은 작업을 수행하며 중복된 값을 출력하지 않습니다.

예와의 차이에 대해서는http://http://sql-plsql.blogspot.in/2010/05/difference-between-union-union-all.html 를 참조해 주세요.

언급URL : https://stackoverflow.com/questions/10538539/join-two-select-statement-results