mit Microsoft SQL Server 2012Wie entsprechende Spalten an einen Dreh Dataset
Ich habe eine Tabelle hinzu:
PartID |TypeSet | Setting | ObservID |TransDate
---------------------------------------------
1 A 456 12 10/20/2015
1 A 377 12 10/20/2015
1 A 425 12 10/20/2015
1 A 665 12 10/20/2015
1 A 543 12 10/20/2015
1 A 554 12 10/20/2015
1 B 34 41 10/21/2015
1 B 27 41 10/21/2015
1 B 27 41 10/21/2015
1 B 29 41 10/21/2015
1 C 1299 12 10/20/2015
1 C 1227 12 10/20/2015
Ich mag würde es als die folgende Anzeige erscheinen. Einzelne Reihe gruppiert auf PartID.
Ich kann die ObservIDs nicht anzeigen, ohne ein mehrzeiliges Rückgabe-Dataset zu erstellen. Ich habe kein Problem mit der A, B und C Durchschnitt mit dieser Abfrage:
SELECT
PartID
,[A] as 'A Average'
,[B] as 'B Average'
,[C] as 'C Average'
-- ,(ObservID)
--,CASE WHEN [A] = 'A Average' THEN max([ObservID]) END as 'A Ob'
--,CASE WHEN [B] = 'B Average' THEN max([ObservID]) END as 'B Ob'
-- ,CASE WHEN [C] = 'C Average' THEN max([ObservID]) END as 'C Ob'
FROM
(SELECT
PartID
,TypeSet
,Setting
--,ObservID
FROM #Temp1
) as MeasData
PIVOT
(
AVG(Setting)
FOR [TypeSet] in
([A], [B], [C])
) as PivotTable
Sie können in der obigen Abfrage sehen, wo ich versucht habe, in ihm zu bekommen ObservID aber wenn ich diese Zeilen Kommentar-, treten Fehler auf. Einige Anmerkungen: Die ObservIDs bleiben für jedes TypeSet konsistent.
Hier die Daten:
create table #Temp1
(
PartID INT
, TypeSet VARCHAR(10)
, Setting INT
, ObservID INT
, TransDate Date
)
INSERT INTO #Temp1(PartID, TypeSet, Setting, ObservID, TransDate) VALUES
(1, 'A', 456, 12, '10/20/2015'),
(1, 'A', 377, 12, '10/20/2015'),
(1, 'A', 425, 12, '10/20/2015'),
(1, 'A', 665, 12, '10/20/2015'),
(1, 'A', 543, 12, '10/20/2015'),
(1, 'A', 554, 12, '10/20/2015'),
(1, 'B', 34, 41, '10/21/2015'),
(1, 'B', 27, 41, '10/21/2015'),
(1, 'B', 27, 41, '10/21/2015'),
(1, 'B', 29, 41, '10/21/2015'),
(1, 'C', 1299, 12, '10/20/2015'),
(1, 'C', 1227, 12, '10/20/2015')
Ist meine gewünschte Ausgabe möglich mit dem Pivotisierungsoperation? Oder sollte ich die Route von mehreren JOINs auf dem Tisch für jeden Typeset gehen?
Das ist großartig. Bringt mir was ich brauche. Meine einzige Sorge ist die Leistung, aber zur gleichen Zeit, habe ich nicht die EXPLAIN-Pläne überprüft ... Aber danke dafür. – Charlie
@Charlie Dies sollte so schnell wie jede Abfrage mit 'PIVOT' sein. 'PIVOT' ist eigentlich syntaktischer Zucker für bedingte Aggregation. –