Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Добавить данные, которые есть в другой таблице  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
Имеются 2 таблицы:
table1 - Calendar - Календарь дат с 2014 по 2018 гг
tDate    dateid
29.01.2015       5
30.01.2015       6
31.01.2015       7

table2 - Summary
Logdate    ComputerID
29.01.2015       56
31.01.2015       56

Необходимо добавить в таблицу Summary те Logdate по ComputerID, если LogDate за определенный день нет.
Должно получиться:
Logdate    ComputerID
29.01.2015       56
30.01.2015       56 
31.01.2015       56

Сделал запрос на выборку, но он не выводит ни одного значения:
select
we_Calendar.tDate,
we_SummaryActivities.ComputerId
        from we_Calendar
        INNER JOIN we_SummaryActivities ON we_SummaryActivities.LogDate=we_Calendar.tDate
        where we_Calendar.tDate NOT IN
        (SELECT we_SummaryActivities.LogDate
from we_SummaryActivities
GROUP BY we_SummaryActivities.LogDate,we_SummaryActivities.ComputerId)
26 апр 17, 20:00    [20437596]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные, которые есть в другой таблице  [new]
invm
Member

Откуда: Москва
Сообщений: 9270
select
 b.tDate, a.ComputerID
from
 (select distinct ComputerID from we_SummaryActivities) a cross join
 we_Calendar b
where
 not exists(select 1 from we_SummaryActivities where ComputerID = a.ComputerID and LogDate = b.tDate);
26 апр 17, 20:22    [20437651]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные, которые есть в другой таблице  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
invm,

Немного доработав под себя, добавил дополнительные условия, запрос работает.
Но теперь выяснилось, что нужно добавить не с 2014 года, а с даты первого Logdate по
определенному computerid, получается, что выберутся и даты до первого появления Logdate
26 апр 17, 21:25    [20437859]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные, которые есть в другой таблице  [new]
invm
Member

Откуда: Москва
Сообщений: 9270
Vladsn07
нужно добавить не с 2014 года, а с даты первого Logdate по
определенному computerid
and b.tDate >= (select min(LogDate) from we_SummaryActivities where ComputerID = ...)
26 апр 17, 22:05    [20437982]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные, которые есть в другой таблице  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
invm,

and b.tDate >= (select min(LogDate) from we_SummaryActivities where ComputerID = s.ComputerID)

вроде так к основному условию?
26 апр 17, 22:13    [20438003]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные, которые есть в другой таблице  [new]
invm
Member

Откуда: Москва
Сообщений: 9270
Vladsn07,

Да.
26 апр 17, 22:19    [20438019]     Ответить | Цитировать Сообщить модератору
 Re: Добавить данные, которые есть в другой таблице  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
invm,

Большое спасибо, идем дальше...
26 апр 17, 22:26    [20438035]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить