Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням? / 17 сообщений из 17, страница 1 из 1
07.05.2019, 08:36
    #39810516
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
Добрый день. Допустим есть таблица:
id sum date145DDFB5-C523-4693-8CBD-04753EE5A348 3 2019-05-07 07:08:16.0009B89F23D-1551-4C3A-A403-AD7528421113 2 2019-05-07 07:06:16.000C528FC75-3BAE-40DE-83EC-FE12D2C8B287 1 2019-05-06 07:04:16.000322C719A-72E9-43E7-A28C-40E5A0E98558 1 2019-05-05 07:02:16.000DCBAC891-4C76-4D74-BEAA-09E8F3C6B87A 1 2019-05-04 19:02:15.0007CAF4A82-7876-4F37-9637-20382C1D9A93 0 2019-05-03 19:00:15.000
Можно ли получить сумму данных за день. Но за весь текущий месяц?
Например сейчас 7 мая. Значит нужно 7 строк. И сумму данных за эти дни.
Чтобы на выходе получилась такая таблица:
id day sumB5569B7E-13E1-47AE-B7EF-6A79CC9A2BD4 1 nullAEA0D1A3-2DC0-41C0-AEB0-443C72C794F4 2 nullBD4771DC-2B14-4875-B265-09C185373E36 3 0615FC4A1-EE96-4827-ABF1-9C3AA4A635E6 4 1A1723DD0-1B04-43D5-ADCB-8FC8A9683D005 14901A0C9-F729-4D63-BCCA-5F6FE70D053D6 1BE9F1DF5-DA18-4818-92B3-AF75C1B739657 5

Может ссылка на пример будет. Заранее спасибо.
...
Рейтинг: 0 / 0
07.05.2019, 08:43
    #39810523
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
Hopfen_Artur, сделайте таблицу чисел/дат и джойните со своими данными по полю date преобразовав его в тип Date
...
Рейтинг: 0 / 0
07.05.2019, 08:44
    #39810525
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
Или таблицу-календарь или рекурсивное CTE (в котором генерируются нужные даты) лефт-джойнишь со своей таблицей фактов и агрегируешь.
Вроде всё просто ...
...
Рейтинг: 0 / 0
07.05.2019, 08:45
    #39810526
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
А как/зачем генерить id в результирующей таблице?
...
Рейтинг: 0 / 0
07.05.2019, 08:53
    #39810529
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
Все понял, сейчас попробую и выложу что получилось. Спасибо.
...
Рейтинг: 0 / 0
07.05.2019, 10:17
    #39810567
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
HandKotHopfen_Artur, сделайте таблицу чисел/дат и джойните со своими данными по полю date преобразовав его в тип DateА зачем?
У него же все нужные строки хранятся в таблице. Если бы нужны были и отсутствующие...
Просто
Код: sql
1.
GROUP BY CAST([date] AS DATE)
...
Рейтинг: 0 / 0
07.05.2019, 12:25
    #39810632
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
Hopfen_ArturЧтобы на выходе получилась такая таблица:Вообще-то когда показываете исходные данные и нужный результат, делайте так, чтобы они по данным соответствовали друг другу.
...
Рейтинг: 0 / 0
07.05.2019, 12:36
    #39810634
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
iapHandKotHopfen_Artur, сделайте таблицу чисел/дат и джойните со своими данными по полю date преобразовав его в тип DateА зачем?
У него же все нужные строки хранятся в таблице. Если бы нужны были и отсутствующие...
Просто
Код: sql
1.
GROUP BY CAST([date] AS DATE)


как я понял, ему нужно за все даты, а в таблице нет 1 и 2 числа
...
Рейтинг: 0 / 0
07.05.2019, 12:38
    #39810636
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
HandKotiapпропущено...
А зачем?
У него же все нужные строки хранятся в таблице. Если бы нужны были и отсутствующие...
Просто
Код: sql
1.
GROUP BY CAST([date] AS DATE)



как я понял, ему нужно за все даты, а в таблице нет 1 и 2 числаТочно. Прошу прощения.
...
Рейтинг: 0 / 0
07.05.2019, 12:44
    #39810639
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
iapHandKotHopfen_Artur, сделайте таблицу чисел/дат и джойните со своими данными по полю date преобразовав его в тип DateА зачем?
У него же все нужные строки хранятся в таблице. Если бы нужны были и отсутствующие...
Просто
Код: sql
1.
GROUP BY CAST([date] AS DATE)



Код: sql
1.
GROUP BY YEAR([date]), MONTH([date])
...
Рейтинг: 0 / 0
07.05.2019, 13:33
    #39810651
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
Hopfen_Artur,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
WITH
dd AS (
  -- сделайте таблицу чисел/дат и джойните со своими данными по полю date преобразовав его в тип Date
  SELECT
    [date] = DATEADD( DAY, vl.[number] - DATEPART( DAY, GETDATE() ), CONVERT( DATE, GETDATE() ) )
  FROM
    master.dbo.spt_values vl
  WHERE
        vl.[number] BETWEEN 1 AND DATEPART( DAY, GETDATE() )
    AND vl.[type] = 'P'
),
tt AS (
  SELECT
    [date]  = CONVERT( DATE, tt.[date] ),
    [sum]   = SUM( tt.[sum] )
  FROM
    [dbo].[DataTable]
  WHERE
        [date] >= DATEADD( DAY, 1 - DATEPART( DAY, GETDATE() ), CONVERT( DATE, GETDATE() ) )
    AND [date] < GETDATE()
  GROUP BY
    CONVERT( DATE, tt.[date] )
)
SELECT
  [date]  = dd.[date],
  [sum]   = SUM( tt.[sum] )
FROM
  dd
  LEFT JOIN tt ON (
        tt.[date] = dd.[date] )
GROUP BY
  dd.[date]
ORDER BY
  1
;
...
Рейтинг: 0 / 0
07.05.2019, 13:53
    #39810658
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
Руслан ДамировичHopfen_Artur,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
WITH
dd AS (
  -- сделайте таблицу чисел/дат и джойните со своими данными по полю date преобразовав его в тип Date
  SELECT
    [date] = DATEADD( DAY, vl.[number] - DATEPART( DAY, GETDATE() ), CONVERT( DATE, GETDATE() ) )
  FROM
    master.dbo.spt_values vl
  WHERE
        vl.[number] BETWEEN 1 AND DATEPART( DAY, GETDATE() )
    AND vl.[type] = 'P'
),
tt AS (
  SELECT
    [date]  = CONVERT( DATE, tt.[date] ),
    [sum]   = SUM( tt.[sum] )
  FROM
    [dbo].[DataTable]
  WHERE
        [date] >= DATEADD( DAY, 1 - DATEPART( DAY, GETDATE() ), CONVERT( DATE, GETDATE() ) )
    AND [date] < GETDATE()
  GROUP BY
    CONVERT( DATE, tt.[date] )
)
SELECT
  [date]  = dd.[date],
  [sum]   = SUM( tt.[sum] )
FROM
  dd
  LEFT JOIN tt ON (
        tt.[date] = dd.[date] )
GROUP BY
  dd.[date]
ORDER BY
  1
;



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare @DataTable table ([sum] int,[Date] datetime)
insert @DataTable
values (3,	'2019-05-07 07:08:16')
      ,(2,	'2019-05-07 07:06:16')
      ,(1,	'2019-05-06 07:04:16')
      ,(1,	'2019-05-05 07:02:16')
      ,(1,	'2019-05-04 19:02:15')
      ,(0,	'2019-05-03 19:00:15');   

with a as (select cast(getdate() as date) as Ondate)
    ,x as (select dateadd(d,-vl.[number], a.OnDate) Dt
            FROM master.dbo.spt_values vl, a
           WHERE vl.type = 'P'
             and vl.[number]<datepart(day,a.Ondate))
select x.Dt,isnull(sum(sum(d.[sum]))over(order by x.Dt),0) s
 from x
 left join @DataTable d
   on d.[Date]>=x.Dt 
  and d.[Date]<dateadd(dd,1,x.Dt)
 group by x.Dt
...
Рейтинг: 0 / 0
07.05.2019, 13:56
    #39810661
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
Посетитель,

Осталось выяснить зачем это
...
Рейтинг: 0 / 0
07.05.2019, 13:59
    #39810664
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
TaPaKПосетитель,

Осталось выяснить зачем это
данные за каждый день месяца нарастающим итогом?
да мало ли зачем бузинесу оно надо.
...
Рейтинг: 0 / 0
07.05.2019, 14:00
    #39810665
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
ПосетительTaPaKПосетитель,

Осталось выяснить зачем это
данные за каждый день месяца нарастающим итогом?
да мало ли зачем бузинесу оно надо.
о. так ему не нарастающим итогом.
тогда я мимо кассы)
...
Рейтинг: 0 / 0
07.05.2019, 14:09
    #39810669
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
Собственно, раз уж начал, чо б и не поправить
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
declare @DataTable table ([sum] int,[Date] datetime)
insert @DataTable
values (3,	'2019-05-07 07:08:16')
      ,(2,	'2019-05-07 07:06:16')
      ,(1,	'2019-05-06 07:04:16')
      ,(1,	'2019-05-05 07:02:16')
      ,(1,	'2019-05-04 19:02:15')
      ,(0,	'2019-05-03 19:00:15');   

with a as (select cast(getdate() as date) as Ondate)
    ,x as (select dateadd(d,-vl.[number], a.OnDate) Dt
            FROM master.dbo.spt_values vl, a
           WHERE vl.type = 'P'
             and vl.[number]<datepart(day,a.Ondate))
--select x.Dt,isnull(sum(sum(d.[sum]))over(order by x.Dt),0) s
select x.Dt,datepart(day,x.Dt)[Day],sum(d.[sum]) s
 from x
 left join @DataTable d
   on d.[Date]>=x.Dt 
  and d.[Date]<dateadd(dd,1,x.Dt)
 group by x.Dt
...
Рейтинг: 0 / 0
08.05.2019, 08:33
    #39811077
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
Всем спасибо большое, у самого так и не вышло.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]