sql >> Databáze >  >> RDS >> Sqlserver

Transponujte sadu řádků jako sloupce v SQL Server 2000

Příklad na http://jdixon.dotnetdevelopersjournal.com/pivot_table_data_in_sql_server_2000_and_2005.htm funguje pouze v případě, že předem víte, jaké mohou být hodnoty řádků. Řekněme například, že máte entitu s vlastními atributy a vlastní atributy jsou implementovány jako řádky v podřízené tabulce, kde podřízená tabulka jsou v podstatě páry proměnná/hodnota a tyto páry proměnná/hodnota jsou konfigurovatelné.

color red
size  big
city  Chicago

Popíšu vám techniku, která funguje. Použil jsem to. Nepropaguji to, ale funguje to.

Chcete-li posunout data tam, kde předem nevíte, jaké hodnoty mohou být, vytvořte za běhu dočasnou tabulku bez sloupců. Poté pomocí kurzoru procházejte řádky a pro každou proměnnou vystavte dynamicky vytvořenou „alter table“, takže vaše dočasná tabulka nakonec obsahuje sloupce, barvu, velikost, město.

Pak vložíte jeden řádek do své dočasné tabulky, aktualizujete jej pomocí dalšího kurzoru přes proměnnou, páry hodnot a poté jej vyberete, obvykle spojený s nadřazenou entitou, takže to vypadá, že tyto páry vlastní proměnné/hodnoty byly jako vestavěné ve sloupcích v původní nadřazené entitě.



  1. Zřetězení mnoha řádků do jednoho textového řetězce se seskupením

  2. Tipy ke snížení složitosti serveru SQL

  3. Jaký je nejlepší způsob, jak postupně odstranit staré řádky z MySQL?

  4. Funkce GROUP_CONCAT() v MySQL