Czy można połączyć wyniki 2 SELECT
instrukcji sql w jednej instrukcji? Mam bazę zadań, w której każdy rekord jest osobnym zadaniem, z terminami (a PALT
, który jest tylko liczbą INT
dni od początku do terminu. Age
To również INT
liczba dni.)
Chcę mieć tabelę, w której każda osoba ma w tabeli, liczbę zadań, które mają i liczbę LATE
zadań, które mają (jeśli są).
Mogę łatwo uzyskać te dane w oddzielnych tabelach, na przykład:
SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks
zwracanie danych takich jak:
ks # Tasks
person1 7
person2 3
a potem mam:
SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks
która zwraca:
ks # Late
person1 1
person2 1
Chcę połączyć wyniki tych dwóch select
stwierdzeń (przez KS
)
Staram się unikać używania tabel tymczasowych, ale jeśli jest to jedyny praktyczny sposób, aby to zrobić, chciałbym dowiedzieć się więcej o używaniu tabel tymczasowych w ten sposób.
Próbowałem też zrobić jakieś count()
wiersze, które spełniają warunek, ale nie mogłem też wymyślić, jak to zrobić. Jeśli to możliwe, to też by działało.
Uzupełnienie: Niestety, chcę mieć moje wyniki kolumn KS
, Tasks
orazLate
KS # Tasks # Late
person1 7 1
person2 3 1
person3 2 0 (or null)
Dodatkowo chcę, żeby ktoś się pojawił, nawet jeśli nie ma spóźnionych zadań.
SUM(CASE WHEN Age > Palt THEN 1 ELSE 0 END) Late
działa dobrze, dzięki za tę odpowiedź!
Dwie instrukcje wyboru również działają, a LEFT JOIN
łączenie ich również działa, a teraz rozumiem, jak łączyć wiele select
w ten sposób
Odpowiedzi:
źródło
Spróbuj czegoś takiego:
źródło
Zastosowanie
UNION
:Lub
UNION ALL
jeśli chcesz duplikaty:źródło
Jeśli Wiek i Palt są kolumnami w tej samej tabeli, możesz policzyć (*) wszystkie zadania i zsumować tylko te późne, jak poniżej:
źródło
możesz użyć
UNION ALL
do tego słowa kluczowego.Oto dokument MSDN, aby to zrobić w T-SQL http://msdn.microsoft.com/en-us/library/ms180026.aspx
UNION ALL - łączy zestaw wyników
UNION - wykonuje coś w rodzaju Set Union i nie wyświetla zduplikowanych wartości
Dla różnicy z przykładem: http://sql-plsql.blogspot.in/2010/05/difference-between-union-union-all.html
źródło