У меня есть список ежедневных данных, которые я хочу суммировать на основе имени, но группировать и отображать по дате. Я хочу объединить из таблицы заказов и POS. Мне удается получить каждое отдельное бронирование и POS, но при попытке объединить.. Не удалось
Все операторы select хороши, но потерпели неудачу, когда я добавил оператор UNION ALL
Select Name, CONVERT(char(10), DatePayment,120), SUM(Amount) Amount
From (
select PT.Name, CONVERT(char(10), DatePayment, 120) Date, SUM(Amount) Amount
From Payments P
Inner Join PaymentTypes PT On P.PaymentType = PT.ID
Inner Join BookingPayments BP On P.ID = BP.PaymentID
Inner Join Bookings B On B.ID = BP.BookingID
Where DatePayment >= '2018-12-01 00:00:00' And
DatePayment <= '2018-12-31 23:59:59.997' And
BookingStatus IN (0,2,3,4,6)
Group By PT.Name, CONVERT(char(10), DatePayment, 120)
UNION ALL
Select PT.Name, CONVERT(char(10), DatePayment, 120) Date, SUM(P.Amount) Amount
From Payments P
Inner Join PaymentTypes PT On P.PaymentType = PT.ID
Inner Join POSSales POS On P.ID = POS.PaymentID
Where DatePayment >= '2018-12-01 00:00:00' And
DatePayment <= '2018-12-31 23:59:59.997'
Group By PT.Name, CONVERT(char(10), DatePayment, 120))
a Group By Name, CONVERT(char(10), DatePayment, 120)
order by CONVERT(char(10), DatePayment, 120);
Я продолжаю получать следующую ошибку
Msg 207, Level 16, State 1, Line 22
Invalid column name 'DatePayment'.
Msg 207, Level 16, State 1, Line 1
Invalid column name 'DatePayment'.
Msg 207, Level 16, State 1, Line 23
Invalid column name 'DatePayment'.
Вместо DatePayment вам нужно использовать Date as, вы использовали псевдоним, вам нужно выбрать псевдоним
Select Name, CONVERT(char(10), 'Date',120), SUM(Amount) Amount
From (
select PT.Name, CONVERT(char(10), DatePayment, 120) Date, SUM(Amount) Amount
From Payments P
Inner Join PaymentTypes PT On P.PaymentType = PT.ID
Inner Join BookingPayments BP On P.ID = BP.PaymentID
Inner Join Bookings B On B.ID = BP.BookingID
Where DatePayment >= '2018-12-01 00:00:00' And
DatePayment <= '2018-12-31 23:59:59.997' And
BookingStatus IN (0,2,3,4,6)
Group By PT.Name, CONVERT(char(10), DatePayment, 120)
UNION ALL
Select PT.Name, CONVERT(char(10), DatePayment, 120) Date, SUM(P.Amount) Amount
From Payments P
Inner Join PaymentTypes PT On P.PaymentType = PT.ID
Inner Join POSSales POS On P.ID = POS.PaymentID
Where DatePayment >= '2018-12-01 00:00:00' And
DatePayment <= '2018-12-31 23:59:59.997'
Group By PT.Name, CONVERT(char(10), DatePayment, 120)
)a Group By Name, CONVERT(char(10), 'Date', 120)
order by CONVERT(char(10), 'Date', 120);