powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
17 сообщений из 17, страница 1 из 1
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #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
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #39810523
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hopfen_Artur, сделайте таблицу чисел/дат и джойните со своими данными по полю date преобразовав его в тип Date
...
Рейтинг: 0 / 0
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #39810525
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или таблицу-календарь или рекурсивное CTE (в котором генерируются нужные даты) лефт-джойнишь со своей таблицей фактов и агрегируешь.
Вроде всё просто ...
...
Рейтинг: 0 / 0
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #39810526
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как/зачем генерить id в результирующей таблице?
...
Рейтинг: 0 / 0
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #39810529
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все понял, сейчас попробую и выложу что получилось. Спасибо.
...
Рейтинг: 0 / 0
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #39810567
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotHopfen_Artur, сделайте таблицу чисел/дат и джойните со своими данными по полю date преобразовав его в тип DateА зачем?
У него же все нужные строки хранятся в таблице. Если бы нужны были и отсутствующие...
Просто
Код: sql
1.
GROUP BY CAST([date] AS DATE)
...
Рейтинг: 0 / 0
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #39810632
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hopfen_ArturЧтобы на выходе получилась такая таблица:Вообще-то когда показываете исходные данные и нужный результат, делайте так, чтобы они по данным соответствовали друг другу.
...
Рейтинг: 0 / 0
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #39810634
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapHandKotHopfen_Artur, сделайте таблицу чисел/дат и джойните со своими данными по полю date преобразовав его в тип DateА зачем?
У него же все нужные строки хранятся в таблице. Если бы нужны были и отсутствующие...
Просто
Код: sql
1.
GROUP BY CAST([date] AS DATE)


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



как я понял, ему нужно за все даты, а в таблице нет 1 и 2 числаТочно. Прошу прощения.
...
Рейтинг: 0 / 0
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #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
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #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
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #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
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #39810661
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посетитель,

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

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

Осталось выяснить зачем это
данные за каждый день месяца нарастающим итогом?
да мало ли зачем бузинесу оно надо.
о. так ему не нарастающим итогом.
тогда я мимо кассы)
...
Рейтинг: 0 / 0
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #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
Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
    #39811077
Hopfen_Artur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо большое, у самого так и не вышло.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подскажите можно ли сделать выпорку за текущий месяц и разбить ее по дням?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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