Я хочу повернуть таблицу - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу, чтобы PIVOT DATA КАК в указанном ниже формате, ниже я поставил код для создания таблицы с данными, которые у меня уже есть.

CREATE TABLE #temp
(
SHOW     VARCHAR(100),
moviename    VARCHAR(100),
ticketrate    INT,
collectiondate    DATETIME,
totalcaroccupancy  DECIMAL(18,2)
)

INSERT INTO #temp
(
SHOW,
moviename,
ticketrate,
collectiondate,
totalcaroccupancy
)
SELECT 'Evening','DASSEHRA',70,'2018-10-26 00:00:00.000','11440.00' union all
SELECT 'Evening','DASSEHRA',70,'2018-10-27 00:00:00.000','16016.00' union all
SELECT 'Night','Test Thugs',70,'2018-10-26 00:00:00.000','14560.00' union all
SELECT 'Night','Test Thugs',70,'2018-10-27 00:00:00.000','15600.00'

мои текущие данные таблицы, как показано ниже:

SHOW       moviename     ticketrate    collectiondate      totalcaroccupancy
Evening    DASSEHRA      70            2018-10-26 00:00:00.000    11440.00
Evening    DASSEHRA      70            2018-10-27 00:00:00.000    16016.00
Night      Test Thugs    70            2018-10-26 00:00:00.000    14560.00
Night      Test Thugs    70            2018-10-27 00:00:00.000    15600.00

Я хочу вывод, как показано ниже:

collectiondate             eveningticketrate    eveningticketrate    eveningMovieName    nightMovieName    eveningtotalcaroccupancy    nighttotalcaroccupancy
2018-10-26 00:00:00.000    70                   70                   DASSEHRA            Test Thugs        11440.00                    14560.00
2018-10-27 00:00:00.000    70                   70                   DASSEHRA            Test Thugs        16016.00                    15600.00

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Альтернативой является создание 2 подзапросов, один на вечер, другой на ночь и объединить их вместе

SELECT evening.collectiondate, eveningticketrate, eveningmoviename, eveningtotalcaroccupancy,
    nightticketrate, nightmoviename, nighttotalcaroccupancy
FROM (
    SELECT collectiondate, ticketrate as eveningticketrate, moviename as eveningmoviename, totalcaroccupancy as eveningtotalcaroccupancy
    FROM #temp
    WHERE show = 'Evening') evening
INNER JOIN (
    SELECT collectiondate, ticketrate as nightticketrate, moviename as nightmoviename, totalcaroccupancy as nighttotalcaroccupancy
    FROM #temp
    WHERE show = 'Night') night ON evening.collectiondate = night.collectiondate
ORDER BY evening.collectiondate;
0 голосов
/ 20 ноября 2018

просто используйте условный регистр, как показано ниже

select  collectiondate,
    max(case when SHOW = 'Evening' then ticketrate end) as eveningticketrate,
    max(case when SHOW = 'Night' then ticketrate end) as nightticketrate,
    max(case when SHOW = 'Evening' then moviename end) as eveningmoviename,
    max(case when SHOW = 'Night' then moviename end) as nightmoviename,
    max(case when SHOW = 'Evening' then totalcaroccupancy end) as eveningtotalcaroccupancy,
    max(case when SHOW = 'Night' then totalcaroccupancy end) as nighttotalcaroccupancy
from    #temp
group by collectiondate
...