próbuje spłaszczyć wiersze do kolumn
Mam grupę wierszy w tabeli, które mają identyfikator. Próbuję spłaszczyć go w wierszach z wieloma kolumnami. Jestem prawie pewien, że zrobiłem to z partycją cte i może.
Użyłem cte do usunięcia duplikatów danych i pomyślałem, że zrobiłem coś podobnego do tego, co próbuję osiągnąć tutaj. Udało mi się znaleźć praktyczne rozwiązanie (wymienione poniżej), ale nadal mam ochotę na bardziej eleganckie rozwiązanie.
CREATE TABLE #MyTable ( RowID int , field VARCHAR(10), value VARCHAR(10))
INSERT INTO #MyTable ( RowID, field, value ) VALUES ( 1, 'first', 'neil' )
INSERT INTO #MyTable ( RowID, field, value ) VALUES ( 2, 'first', 'bob' )
INSERT INTO #MyTable ( RowID, field, value ) VALUES ( 3, 'first', 'tom' )
INSERT INTO #MyTable ( RowID, field, value ) VALUES ( 1, 'last', 'young' )
INSERT INTO #MyTable ( RowID, field, value ) VALUES ( 2, 'last', 'dylan' )
INSERT INTO #MyTable ( RowID, field, value ) VALUES ( 3, 'last', 'petty' )
SELECT * FROM #mytable
- starając się to osiągnąć za pomocą cte / partition:
SELECT rowid,
[first] = (Select value FROM #mytable where field = 'first' and rowid = t.rowid),
[last] = (Select value FROM #mytable where field = 'last' and rowid = t.rowid)
FROM #mytable t
GROUP BY rowid