Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Truy vấn SQL để nhận tập kết quả chỉ trong hai cột

Bạn có thể sử dụng UNPIVOT chức năng chuyển các cột thành hàng:

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

Xem SQL Fiddle với Demo .

Bỏ chia sẻ sẽ yêu cầu kiểu dữ liệu trên tất cả các cột phải giống nhau. Vì vậy, bạn có thể phải thực hiện cast / convert trên bất kỳ cột nào có các kiểu dữ liệu khác nhau tương tự như sau:

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;

Xem SQL Fiddle với Demo .

Bắt đầu từ SQL Server 2008, điều này cũng có thể được viết bằng cách sử dụng CROSS APPLY với VALUES :

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

Xem SQL Fiddle with Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi 'datetime' thành 'time' trong SQL Server (Ví dụ T-SQL)

  2. Mili giây từ DateTime trong SQL Server và C # không giống nhau

  3. Làm cách nào để chỉ định ngày tháng khi viết truy vấn SQL từ SQL Server được liên kết với Oracle?

  4. Sự khác biệt giữa Chỉ mục theo cụm và Chỉ mục duy nhất là gì?

  5. SQL Server * =Toán tử?