2016-08-02 21 views
0

Ich habe eine Spalte L3 wie unten.Konvertieren einzelner Spalten mehrere Zeilenwerte in mehrere Spalten Einzelwerte

L3 
--- 
4 
6 

Jetzt möchte ich diese beiden Zeilen als Spalten angezeigt werden wie folgt:

L3 L4 
-- -- 
4 6 

Bitte ignorieren Sie alle Aggregatfunktionen beteiligt, diese Daten zu vergleichen, da sie nicht in beliebiger Reihenfolge sind und numerische Werte können intermittierend ändern .

+0

'SELECT CASE WHEN L3 = 4 THEN L3 END AS L3, CASE WHEN L3 = 6 THEN L3 END AS L4 von ; 'Ich kann mir nicht vorstellen, dass dies das ist, was du willst, aber da du nicht wirklich erklärst, wie du zu der gewünschten Ausgabe kommst ... – JNevill

+0

Warum setze man einen Wert in eine Spalte und den anderen in die zweite Spalte? Was ist die Regel hier - es gibt keine Möglichkeit, dies zu beantworten, wenn Sie uns nicht sagen, wie es ist, ist es jede zweite Reihe? – Hogan

+0

@JNevill und Hogan - ich zähle zwei Spalten einer Tabelle als eine einzelne Spalte mit zwei Zeilen. Dann möchte ich diese Zeilen einer einzelnen Ausgabespalte auf mehrere Spalten mit einer einzelnen Zeile aufteilen, damit ich diese Anzahl auswählen und an anderer Stelle verwenden kann. – Muruga

Antwort

1

Sagen wir, Sie wollen nur wechseln. Ich würde die LAG() Funktion verwenden, um den vorherigen Zeilen Wert zu erhalten und überspringen Reihen ... so etwas wie dieser

SELECT L3, L4 
FROM (
    SELECT LAG(L3) AS L3, L3 AS L4, ROW_NUMBER() OVER() AS RN 
    FROM A_TABLE_YOU_NAME 
) 
WHERE RN % 2 = 0 

SQL Server wird wahrscheinlich sträuben sie nicht eine Bestellung für LAG mit() so müssen Sie geben etwas bestellen - aber wenn es dir egal ist, benutze einfach etwas. Stellen Sie sicher, dass Sie die Reihenfolge für LAG() und ROW_NUMBER() verwenden, oder Sie erhalten "interessante" Ergebnisse.



Wenn Sie LAG nicht()

WITH numbered as (
    SELECT L3, ROW_NUMBER() OVER() AS RN 
    FROM A_TABLE_YOU_NAME 
) 
SELECT B.L3 AS L3, A.L3 AS L4 
FROM numbered A 
JOIN numbered B ON A.RN = B.RN+1 
WHERE A.RN % 2 = 0 
+0

Es tut mir leid, dass ich vergessen habe zu erwähnen, dass ich SQL Server 2008 R2 verwende. Lag() unterstützt ab Version 2012. – Muruga

+0

ok Ich poste eine Version mit einem Self-Join. – Hogan