Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL заявка за получаване на набора от резултати само в две колони

Можете да използвате UNPIVOT функция за превръщане на колоните в редове:

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

Вижте SQL Fiddle с демонстрация .

Отмяната на завъртането ще изисква типът данни във всички колони да бъде еднакъв. Така че може да се наложи да извършите cast /конвертиране във всички колони с различни типове данни, подобни на това:

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;

Вижте SQL Fiddle с демонстрация .

Започвайки от SQL Server 2008, това може да бъде написано и с помощта на CROSS APPLY с VALUES :

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

Вижте SQL Fiddle с демонстрация



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Функции на прозореца - Работно общо с нулиране

  2. TABLESAMPLE връща грешен брой редове?

  3. Стартирайте всички SQL файлове в директория

  4. Условни условия в SQL Server

  5. Условен ORDER BY в зависимост от стойностите на колоните