Здравствуйте! Подскажите, пожалуйста, как корректно составить запрос/подзапрос в MS SQL?
Так был поставлен вопрос вчера.
UPD: Так описано более подробно.
В общем есть таблица с данными:
Дата-------------------------------Вес
2013-01-01 0:00:00------------100
2013-01-01 0:01:00------------150
2013-01-01 0:02:00------------130
2013-01-01 0:06:00------------0
2013-01-01 0:10:00------------90
2013-01-01 2:00:00------------200
2013-01-01 4:59:00------------100
2013-01-02 0:00:00------------300
2013-01-02 3:00:00------------400
2013-01-02 6:20:00------------500
2013-01-03 0:59:00------------100
2013-01-03 1:20:00------------300
2013-01-03 3:00:00------------400
2013-01-03 6:20:00------------500
Первый шаг: Найти сумму всех взвешиваний, сгруппировать по дате:
Получается:
Дата--------------------Вес
2013-01-01------------770
2013-01-02------------1200
2013-01-03------------1300
А теперь второй шаг: Надо, чтоб отображалось так:
2013-01-01------------770 (т.к. предыдущей даты нет, остаётся как была)
2013-01-02------------1970 (т.к. 1200 + 770 (сумма за предыдущую дату))
2013-01-03------------3270 (т.к. 1300 + 1970 (сумма за предыдущую дату))
Как я понимаю, необходимо написать подзапрос, в котором нужно найти сумму за предыдущий день и потом сложить её с суммой за обычный день. Т.е. как-то так, но код работает неправильно, т.к. неправильно записано условие в подзапросе:
Как мне это исправить?
P.S. Дата хранится в секундах, поэтому используется CONVERT(varchar, DATEADD(s, nb.TBreport.data, 25568), 102).
Так был поставлен вопрос вчера.
UPD: Так описано более подробно.
В общем есть таблица с данными:
Дата-------------------------------Вес
2013-01-01 0:00:00------------100
2013-01-01 0:01:00------------150
2013-01-01 0:02:00------------130
2013-01-01 0:06:00------------0
2013-01-01 0:10:00------------90
2013-01-01 2:00:00------------200
2013-01-01 4:59:00------------100
2013-01-02 0:00:00------------300
2013-01-02 3:00:00------------400
2013-01-02 6:20:00------------500
2013-01-03 0:59:00------------100
2013-01-03 1:20:00------------300
2013-01-03 3:00:00------------400
2013-01-03 6:20:00------------500
Первый шаг: Найти сумму всех взвешиваний, сгруппировать по дате:
Получается:
Дата--------------------Вес
2013-01-01------------770
2013-01-02------------1200
2013-01-03------------1300
А теперь второй шаг: Надо, чтоб отображалось так:
2013-01-01------------770 (т.к. предыдущей даты нет, остаётся как была)
2013-01-02------------1970 (т.к. 1200 + 770 (сумма за предыдущую дату))
2013-01-03------------3270 (т.к. 1300 + 1970 (сумма за предыдущую дату))
Как я понимаю, необходимо написать подзапрос, в котором нужно найти сумму за предыдущий день и потом сложить её с суммой за обычный день. Т.е. как-то так, но код работает неправильно, т.к. неправильно записано условие в подзапросе:
Как мне это исправить?
P.S. Дата хранится в секундах, поэтому используется CONVERT(varchar, DATEADD(s, nb.TBreport.data, 25568), 102).
что такое s в вашем первом запросе ?
CONVERT(varchar, DATEADD(s, nb.TBreport.data, 25568), 102)
s - second
nb.TBreport.data - поле, где дата хранится в секундах
25568 - кол-во дней 01.01.1970 0:00
Источник 1.
Источник 2.