sql сумма с отдельной колонкой за каждый день - PullRequest
0 голосов
/ 03 марта 2020

Мой текущий код выглядит следующим образом:

declare @start datetime
declare @end datetime

set @start = '2/16/2020'
set @end = '2/19/2020'

select 

s.location, s.department, s.position, SUM(s.hours)/60
from SCHEDULES s where SCHDATE between @start and @end
group by s.location, s.department, s.position

Он дает следующие результаты (что правильно):

   loc dep pos hrs
    2   2   7   96
    3   2   11  96
    2   2   13  192
    3   2   5   96
    3   1   4   228

Как мне разбить это на день, чтобы формат выглядит следующим образом: «start» - это переменная @start, а «start + 1» - это просто плюс один день и т. д. c.

loc dep pos start start+1 start+2 start+3
2   2   7   24     24      24      24
3   2   11  24     24      24      24
2   2   13  48     48      48      48
3   2   5   24     24      24      24
3   1   4   57     57      57      57

спасибо

1 Ответ

0 голосов
/ 03 марта 2020

Похоже, вы хотите сделать сводку:

SELECT  *
    FROM SCHEDULES s 
PIVOT(
    SUM(hours) 
    FOR SCHDATE IN (
        [2020-2-16],
        [2020-2-17], 
        [2020-2-18], 
        [2020-2-19])
) AS pivot_table;

Надеемся, что даты, с которыми вы хотите работать, фиксированы и известны. Если вам нужно поворачиваться на вычисляемых столбцах, кажется, что все становится намного сложнее. Например, см. этот поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...