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
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 № 1Moż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ę