SQL UNION для двух табличных переменных, где дата совпадает, но другие данные - PullRequest
1 голос
/ 25 октября 2010

У меня есть 2 табличные переменные @Data и @ DateTable

@ Данные содержат следующее:

Company   Date        Type      Select
Altec    12-1-2010     d           2
Altec    12-1-2010     a           2
Alect   12-3-2010     d            3

@ DateTable содержит следующее:

Company Date          Type Select
Altec    12-1-2010     a    0
Altec    12-3-2010     a    0
Altec    12-5-2010     a    0
Altec    12-6-2010     a    0

Мне нужно, чтобы в одном и том же запросе появилось и d, и показ. Поэтому, если в таблице @data нет d, соответствующего a, необходимо извлечь его из @DateTable.

Так что, в основном, я хочу получить следующие результаты

Company DATE      Type Select
ALTEC   12-1-10     d    2
ALTEC   12-1-10     a    2
ALTEC   12-3-10     d    3
ALTEC   12-3-10     a    0 (This is pulled from @DateTable)

Как бы я объединил эти 2 таблицы, не получив те, которые уже есть в таблице @Data, но также не получив дополнительные из таблицы @DateType, которые не соответствуют .....

Ответы [ 3 ]

2 голосов
/ 25 октября 2010

Вот мой дубль:

SELECT dt.company,
       dt.date,
       COALESCE(d.type, dt.type) AS type,
       COALESCE(d.select, dt.select) AS select
FROM @DateTable dt 
     LEFT JOIN @Data d ON d.company = dt.company
                       AND d.date = dt.date
1 голос
/ 25 октября 2010

Использование EXISTS / NOT EXISTS:

 SELECT Company, Date, Type, Select FROM DataTable
 UNION ALL
 SELECT Company, Date, Type, Select FROM DateTable
    WHERE EXISTS (SELECT * FROM DataTable WHERE Company = DateTable.Company AND Date = DateTable.Date)
    AND NOT EXISTS (SELECT * FROM DataTable WHERE Company = DateTable.Company AND Date = DateTable.Date AND Type = DateTable.Type)
0 голосов
/ 25 октября 2010

Использование Union:

select [Company], [Date], [Type], sum([Select]) as [Select]
from (select [Company], [Date], [Type], [Select] from @Data union all
      select [Company], [Date], [Type], [Select] from @DateTable) sq
group by [Company], [Date], [Type]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...