Можно ли объединить результаты 2 SQL- SELECT
операторов в одном операторе? У меня есть база данных задач, где каждая запись - это отдельная задача со сроками исполнения (и a 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
работает хорошо, спасибо за этот ответ!
Также работают два оператора select, с помощью LEFT JOIN
которых также можно присоединиться к ним, и теперь я понимаю, как объединить несколько select
s таким способом.
Ответы:
источник
Попробуйте что-то вроде этого:
источник
Используйте
UNION
:Или,
UNION ALL
если вы хотите дубликаты:источник
Если Age и Palt являются столбцами в одной и той же таблице, вы можете посчитать (*) все задачи и суммировать только поздние, например:
источник
Вы можете использовать
UNION ALL
ключевое слово для этого.Вот документ MSDN, чтобы сделать это в T-SQL http://msdn.microsoft.com/en-us/library/ms180026.aspx
UNION ALL - объединяет набор результатов
UNION - делает что-то вроде Set Union и не выводит повторяющиеся значения
Для разницы с примером: http://sql-plsql.blogspot.in/2010/05/difference-between-union-union-all.html
источник