SQL Server 2008 R2: сумма строк без разделения - PullRequest
0 голосов
/ 25 февраля 2020

Мой результат запроса выглядит как

enter image description here

Я хочу что-то вроде этого (кратная сумма на основе столбца srblckd для каждого custid)

enter image description here

Я гуглил и пробовал несколько комбинаций. Я мог бы создать такой запрос (с порядком 1,4). Я думаю, что раздел невозможен в SQL Server 2008 R2

select 
    max(cst.custID) as custID,
    max(custname) as custname,
    max(roomtype) as roomtype,
    sum(srblckd) as SRBlckd  
from 
    SlpRooms 
join 
    EVENT on SRHdrID = EVENT.EvtID 
join 
    CUSTT cst on EVENT.CustID = cst.CustID 
join 
    SALPT slps on EVENT.SPID = slps.salesid 
join 
    roomtypes on roomtypes.roomtypeid = SlpRooms.srtypeid 
where 
    convert(varchar(10), SRDate, 120) between '2020-02-01' and '2020-02-29'   
group by 
    SRDate, cst.custID, srtypeid  

union all

select max(cst.custID) as custID,max(custname) as custname,max(roomtype) as roomtype,sum(srblckd) as SRBlckd  from SlpRooms join EVENT on SRHdrID =EVENT.EvtID join CUSTT cst on EVENT.CustID=cst.CustID join SALPT slps on EVENT.SPID=slps.salesid join roomtypes on roomtypes.roomtypeid=SlpRooms.srtypeid where convert(varchar(10),SRDate, 120) between '2020-02-01' and '2020-02-29' group by SRDate ,cst.custID   order by 1,4

, но это не работает. что еще я могу попробовать?

1 Ответ

1 голос
/ 25 февраля 2020

Как уже упоминалось в комментариях, вы можете сделать свертку. Лично мне нравится контроль над написанием групповых наборов

Вот пример использования данных, несколько похожих на ваши:

DECLARE @Datum TABLE (Date DATE, custID INT, custname VARCHAR(100), roomtype VARCHAR(100), SRBlckd INT) 

INSERT INTO @Datum
(
    Date,
    custID,
    custname,
    roomtype,
    SRBlckd
)

VALUES('2-1-2020',239, 'Value1','Value1',1),
('2-1-2020',384, 'Value2','Value2',1),
('2-1-2020',384, 'Value3','Value3',75),
('2-1-2020',384, 'Value4','Value4',3),
('2-1-2020',408, 'Value5','Value5',17),
('2-1-2020',3182, 'Value6','Value6',25)

SELECT Date,
   custID,
   ISNULL(custname,'Total'),
   roomtype,
   SUM(SRBlckd )

FROM @datum
GROUP BY GROUPING SETS (
(Date, custId, CustName, roomType, SRBLCKD),
(CustID)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...