sql >> Databasteknik >  >> RDS >> Sqlserver

SQL-fråga för att få resultatuppsättningen endast i två kolumner

Du kan använda UNPIVOT funktion för att omvandla kolumnerna till rader:

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

Se SQL-fiol med demo .

unpivot kommer att kräva att datatypen för alla kolumner är densamma. Så du kanske måste utföra en cast /konvertera på alla kolumner med olika datatyper som liknar denna:

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;

Se SQL-fiol med demo .

Från och med SQL Server 2008 kan detta även skrivas med en CROSS APPLY med en VALUES :

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

Se SQL-fiol med demo



  1. Hur visar man funktionen, proceduren, utlöser källkoden i postgresql?

  2. vad är problemet med AttachDbFilename

  3. MySQL ger läs ECONNRESET-fel efter inaktiv tid på node.js-servern

  4. Hur flyttar man kolumner i en MySQL-tabell?