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

SQL dotaz pro získání sady výsledků pouze ve dvou sloupcích

Můžete použít UNPIVOT funkce pro přeměnu sloupců na řádky:

select id, value
from yourtable
unpivot
(
  value
  for col in ([fName], [lName], [Address], [PostCode], [ContactNumber])
) unpiv

Viz SQL Fiddle s ukázkou .

unpivot bude vyžadovat, aby datový typ ve všech sloupcích byl stejný. Takže možná budete muset provést cast /convert na libovolné sloupce s různými datovými typy podobnými tomuto:

select id, value
from
(
  select id, [fName], [lName], [Address], [PostCode],
    cast([ContactNumber] as varchar(15)) [ContactNumber]
  from yourtable
) src
unpivot
(
  value
  for col in ([fName], [lName], [Address], [PostCode], [ContactNumber])
) unpiv;

Viz SQL Fiddle s ukázkou .

Počínaje SQL Server 2008 to lze také zapsat pomocí CROSS APPLY s VALUES :

select t.id,
  c.value
from yourtable t
cross apply
(
  values(fName), 
    (lName), 
    (Address), 
    (PostCode), 
    (cast(ContactNumber as varchar(15)))
) c (value)

Viz SQL Fiddle s ukázkou



  1. Jak extrahovat pouze čas z pole DateTime v Oracle SQL Developer?

  2. Nastavte SQLAlchemy na použití PostgreSQL SERIAL pro generování identity

  3. Jak získat jednu náhodnou položku z databáze v Django/postgreSQL?

  4. Kolik stejných dnů je mezi dvěma rozsahy dat, SQL