sql >> Database teknologi >  >> RDS >> Sqlserver

SQL-forespørgsel for kun at få resultatsættet i to kolonner

Du kan bruge UNPIVOT funktion til at omdanne kolonnerne til rækker:

vælg id, værdi fra dintableunpivot( værdi for col in ([fName], [lName], [Address], [PostCode], [Contact Number])) unpiv 

Se SQL Fiddle with Demo .

Unpivot vil kræve, at datatypen på alle kolonnerne er den samme. Så du skal muligvis udføre en cast /konverter på alle kolonner med forskellige datatyper, der ligner denne:

vælg id, værdifra( vælg id, [fNavn], [lNavn], [Adresse], [Postnummer], cast([Kontaktnummer] som varchar(15)) [Kontaktnummer] fra din tabel) srcunpivot( værdi for col in ([fName], [lName], [Address], [PostCode], [Contact Number])) unpiv;

Se SQL Fiddle with Demo .

Fra og med SQL Server 2008 kan dette også skrives ved hjælp af en CROSS APPLY med en VALUES :

vælg t.id, c.valuefrom yourtable tcross apply( values(fName), (lName), (Address), (PostCode), (cast(Contact Number as varchar(15)))) c (værdi ) 

Se SQL Fiddle with Demo



  1. MySQL:Embedded JSON vs table

  2. Python unicode-kodningsproblem

  3. Konvertering af Long til Varchar2

  4. MySQL NOT IN Forespørgsel meget langsommere efter Mysql-opgradering