2010-10-18 77 views
5

Bảng:cột thành hàng trong máy chủ sql?

CREATE TABLE Table1 (
    col1 INT, 
    col2 nvarchar(10), 
    col3 INT, 
    col4 INT 
); 

INSERT INTO Table1 
    (col1, col2, col3, col4) 
VALUES 
    (1, 'welcome', 3, 4); 

bảng của tôi có kiểu dữ liệu khác nhau, col2 là nvarchar h tôi có thể làm điều này ...

kết quả:

col value 
--------------- 
col1 1 
col2 welcome 
col3 3 
col4 4 
+0

cách bạn có thể làm những gì? –

Trả lời

14

Bạn có thể sử dụng các hoạt động UNPIVOT để có được kết quả của bạn

SELECT col, value 
FROM 
    (SELECT CAST(col1 AS VARCHAR) AS col1, CAST(col2 AS VARCHAR) AS col2, 
     CAST(col3 AS VARCHAR) AS col3, CAST(col4 AS VARCHAR) AS col4 
    FROM Table1) p 
UNPIVOT 
    (value FOR col IN 
     (col1, col2, col3, col4) 
) AS unpvt; 
1

Sử dụng:

SELECT 'col1' AS col, 
     CAST(t1.col1 AS NVARCHAR(10)) AS value 
    FROM TABLE_1 t1 
UNION ALL 
SELECT 'col2' AS col, 
     t2.col2 AS value 
    FROM TABLE_1 t2 
UNION ALL 
SELECT 'col3' AS col, 
     CAST(t3.col3 AS NVARCHAR(10)) AS value 
    FROM TABLE_1 t3 
UNION ALL 
SELECT 'col4' AS col, 
     CAST(t4.col4 AS NVARCHAR(10)) AS value 
    FROM TABLE_1 t4 

Một phần của vấn đề là bạn cần phải cột thứ hai cùng loại dữ liệu:

0
with rows(n) 
as 
(
    select 1 
    union all 
    select n + 1 
    from rows 
    where n + 1 <= 4 
) 
    select case n 
      when 1 then 'col1' 
      when 2 then 'col2' 
      when 3 then 'col3' 
      when 4 then 'col4' 
      end as col, 
      case n 
      when 1 then col1 
      when 2 then col2 
      when 3 then col3 
      when 4 then col4 
      end as value 
    from 
(
    select cast (col1 as varchar) col1, 
     col2, 
     cast (col3 as varchar) col3, 
     cast (col4 as varchar) col4, 
     n 
    from table1, rows 
) x 
Các vấn đề liên quan