2014-04-03 93 views
1

我有這個疑問如何顯示垂直而非水平

select 
raw_item_no, 
raw_item_no_2, 
raw_item_no_3, 
raw_item_no_4 
from jtjobfil_sql 
where job_no = 213418 

它輸出這樣

raw_item_no raw_item_no_2 raw_item_no_3 raw_item_no_4 
23    24    25    26 

我怎麼得到的輸出看起來像這樣

raw_item_nos 
23 
24 
25 
26 
在SQL領域

我看着樞軸,但我無法弄清楚如何做到這一點,因爲我沒有求和任何列。

+0

而不是'PIVOT'你需要'UNPIVOT' - http://technet.microsoft.com/ EN-US /庫/ ms177410(v = SQL.105)的.aspx –

回答

2

您可以使用CROSS APPLY

SELECT x.raw_item_nos 
FROM jtjobfil_sql t 
CROSS APPLY 
(
    VALUES 
     (t.raw_item_no), 
     (t.raw_item_no_2), 
     (t.raw_item_no_3), 
     (t.raw_item_no_4) 
) X (raw_item_nos) 
WHERE job_no = 213418; 
2

你可以使用聯合做些事情。

with my_query (column1, column2, column3) 
as 
(
    SELECT column1, column2, column3 
    FROM my_table 
    where id = 1 
) 
SELECT column1 FROM my_query 
UNION 
SELECT column2 FROM my_query 
UNION 
SELECT column3 FROM my_query 
1

你的情況,你需要UNPIVOT和列的列表。

查詢很簡單

SELECT P AS raw_item_no 
    FROM (
      SELECT raw_item_no 
       ,raw_item_no_2 
       ,raw_item_no_3 
       ,raw_item_no_4 
      FROM jtjobfil_sql 
      WHERE job_no = 213418 
     ) p UNPIVOT (p FOR value IN (raw_item_no, raw_item_no_2, raw_item_no_3, raw_item_no_4)) AS unvpt 

這裏是樣本數據和實例UNPIVOT

DECLARE @table TABLE 
    (
    raw_item_no INT 
    ,raw_item_no_2 INT 
    ,raw_item_no_3 INT 
    ,raw_item_no_4 INT 
    ) 

INSERT INTO @table 
    VALUES (23, 24, 25, 26) 

SELECT P AS raw_item_no 
    FROM (
      SELECT raw_item_no 
       ,raw_item_no_2 
       ,raw_item_no_3 
       ,raw_item_no_4 
      FROM @table 
    ) p UNPIVOT (p FOR value IN (raw_item_no, raw_item_no_2, raw_item_no_3, raw_item_no_4)) AS unvpt 
相關問題