/ / Jak przetransponować wiersze do kolumn w SQL Server? - sql-server, pivot

Jak transponować wiersze do kolumn w SQL Server? - sql-server, pivot

Pracowałem nad tym, jak przetransponować lub obrócić ten stół, ale po tak długiej pracy przez cały czas wciąż jestem na to gotów, czy możesz mi pomóc?

Mój stół wygląda następująco:

CREATE TABLE Table1
(
`Time` datetime,
`IN` int,
`OUT` int
);

INSERT INTO Table1 (`Time`, `IN`, `OUT`)
VALUES ("2017-04-05 15:53:00", 40, "35"),
("2017-04-05 15:24:00", 40, "35"),
("2017-04-05 15:23:00", 40, "35"),
("2017-04-05 14:22:00", 42, "40"),
("2017-04-05 14:21:00", 42, "40"),
("2017-04-05 14:20:00", 42, "40"),
("2017-04-05 13:19:00", 33, "30"),
("2017-04-05 13:18:00", 33, "30"),
("2017-04-05 13:17:00", 33, "30"),
("2017-04-05 13:16:00", 33, "30"),
("2017-04-05 13:15:00", 33, "30"),
("2017-04-05 12:14:00", 29, "25"),
("2017-04-05 12:13:00", 29, "25"),
("2017-04-05 12:12:00", 29, "25"),
("2017-04-05 12:11:00", 29, "25"),
("2017-04-05 11:14:00", 35, "33"),
("2017-04-05 11:13:00", 35, "33"),
("2017-04-05 11:12:00", 35, "33"),
("2017-04-05 11:11:00", 35, "33");

Chcę, aby moje wyniki były podobne do tego

wprowadź opis obrazu tutaj

Wartość w kolumnie "IN" jest zawsze taka sama dla tej konkretnej godziny, nawet wprowadzonej kilka razy, więc potrzebuję tylko 1 wartości, aby znaleźć się w mojej tabeli tak samo jak z wartością w kolumnie "OUT"

The Accum to skumulowana suma za każdą godzinę, po prostu uczyń ją opcjonalną, jeśli jest to nawet możliwe.

Robię pierwszą część, która ma przetransponować 2 kolumny z tym zapytaniem

SELECT
"IN" AS A, [2017-04-05 15:53:00], [2017-04-05 14:22:00],,,,
FROM
(SELECT
[Time], [in], [out]
FROM
Table1) AS SourceTable
PIVOT
(MAX([IN])
FOR [time] IN ([2017-04-05 15:53:00], [2017-04-05 14:22:00],,,,)) AS PivotTable;

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz spróbować tego,

select [Type], [11], [12], [13], [14], [15]
from
(
Select [Time], [Type], value
from (
select t2.*, sum([OUT]) over (order by [TIME]) as ACCUM
from (Select Distinct DATEPART(HOUR, Time) as [Time], [IN], [OUT] from table1) t2
) A
unpivot
(
value for [TYPE] in ([IN],[OUT],[ACCUM])
) unpiv
) src
pivot
(
sum(value)
for [Time] in ([11], [12], [13], [14], [15])
) piv

Uzyskaj więcej szczegółów, aby uczynić go dynamicznym, Prosty sposób transponowania kolumn i wierszy w Sql? Zbierz sumaryczną kolumnę