Die meisten der Beispiele, die ich gesehen habe, sind komplexer, also denke ich, dass ich etwas Einfaches gepostet habe, um das Konzept von pivot
vollständig zu verstehen.Pivot verstehen?
declare @yt TABLE
(
Id int,
Dept varchar(10),
[Day] int,
[Counter] int
);
INSERT INTO @yt
(
ID, Dept, [Day], [Counter]
)
VALUES
(102, 'DeptA', 20170704, 96),
(102, 'DeptP', 20170704, 223),
(103, 'DeptA', 20170704, 84),
(103, 'DeptW', 20170704, 43);
select *
from
(
select id, dept, [day], [Counter]
from @yt
) src
pivot
(
sum([Counter])
for Dept in ([DeptA], [DeptP], [DeptW])
) piv;
Von meinem Verständnis, der Code in Pivot
geschieht Folgendes: 1) ausgewählt, um die Spalte Aggregate (sum([counter])
), schwenkt die Säule in for Dept
und führt dann eine group by
der Rest der Spalten, die nicht angegeben sind (ID
und Day
).
Könnte ich zwei Summen hinzufügen? Oder ist das etwas, das über die Pivot-Funktionalität hinausgeht? Im Folgenden wird ein Fehler generiert:
declare @yt TABLE
(
Id int,
Dept varchar(10),
[Day] int,
[Counter] int,
Sales int
);
INSERT INTO @yt
(
ID, Dept, [Day], [Counter], Sales
)
VALUES
(102, 'DeptA', 20170704, 96, 12),
(102, 'DeptP', 20170704, 223, 5),
(103, 'DeptA', 20170704, 84, 9),
(103, 'DeptW', 20170704, 43, 11);
select *
from
(
select id, dept, [day], [Counter], sales
from @yt
) src
pivot
(
sum([Counter]), ([sales])
for Dept in ([DeptA], [DeptP], [DeptW])
) piv;
hinzufügen wollte, dass diese Frage hilfreich war die pivot tables zu verstehen.
Dieses Problem ist gültig, wenn Ihre Daten mehr als eine Zeile pro Woche speichern können. Kann das passieren ?, welches Ergebnis möchten Sie in diesem Fall? – Lamak
@Lamak wahr, aber das würde auch Auswirkungen auf seine "normale Abfrage", also wirklich, es ist ein Datenproblem - und nicht ein Pivot-Problem. Oder bin ich falsch verstanden? –
@StanShaw Nein, das ist richtig, aber ich versuche nur ein gültiges Anliegen zu verstehen – Lamak