SQL последний день в моль - PullRequest
0 голосов
/ 15 марта 2010

У меня есть следующая таблица, которая представляет собой сводку ежедневных транзакций и загружается каждую ночь.

+++++++++++++++++++++++
+ DateCreated + Sale  +
+++++++++++++++++++++++
+ 20100101    + 1000  +
+ 20100131    + 2000  +
+ 20100210    + 2000  +
+ 20100331    + 4000  +
+++++++++++++++++++++++

Мне нужно отображать продажи по месяцам, но только за последний день каждого месяца.

например

JAN    2000
FEB       0
MAR    4000

Я мог бы, вероятно, сделать это с помощью CASE в моем выборе, но эффективно ли это? Это SQL Server 2000.

Ответы [ 3 ]

7 голосов
/ 15 марта 2010

Моим решением этой проблемы было построить дату, которая будет первым днем ​​следующего месяца, а затем вычесть день.

1 голос
/ 15 марта 2010

Вы можете сделать что-то вроде этого, но оно не будет показывать 0 для отсутствующих данных:

select YEAR(DateCreated) as Year, MONTH(DateCreated) as Month, Sale
from MyTable
where DAY(DateCreated + 1) = 1
0 голосов
/ 15 марта 2010

У меня была таблица календаря, я только добавил столбец «IsLastDayOfMonth», установил последний день каждого месяца. Затем присоединили это к моему запросу, фильтруя только по «IsLastDayOfMonth», и это сработало.

select a.datecreated,a.sale
         from salesummary a
 inner join calendar c
on a.datecreated = c.fulldatekey
 and c.IsLastDayOfMonth = 1
group by a.datecreated,a.sale
...