2009-02-18 88 views
2

我的表有以下幾列:SQL轉換列排

A | B | C | D | E | F 

我想顯示此如下:

MyColumn | MyColumn2 
    A  | B 
    C  | D 
    E  | F 

正如你可以看到我想要顯示的列與對自定義列名稱。這些對列A和B,C柱和d和C柱和D

+0

那麼這張表中只有一行呢? – 2009-02-18 11:18:00

+0

不,該行有多行,但我知道我總是通過使用where子句獲得一行 – Martijn 2009-02-18 11:20:16

回答

2
select A as [Col 1], B as [Col 2] from table 
union all 
select C,D from table 
union all 
select E,F from table 
+0

還有其他方法可以執行此操作嗎?我還讀了一些關於(不)支點的內容?工會之後又有什麼意義? – Martijn 2009-02-18 11:17:05

0

這不會擴展到十億列,但...

Select A as MyColumn, B as MyColumn2 from Table 
UNION 
Select C as MyColumn, D as MyColumn2 from Table 
UNION 
Select E as MyColumn, F as MyColumn2 from Table 

該查詢將刪除雖然重複。所以說有一個記錄在表

你好|世界|你好|世界|你好|世界

我的選擇只會返回

你好|世界

三寶的將返回所有三個...

0

如果我正確理解你,你可以用一個工會做到這一點:如果你的數據類型是不一樣

SELECT A as MyColumn, B as MyColumn2 
UNION 
SELECT C as MyColumn, D as MyColumn2 
UNION 
SELECT E as MyColumn, F as MyColumn2 

匹配列,那麼你需要先轉換數據類型,所以像這樣:

SELECT CONVERT(VARCHAR(10), A) as MyColumn, CONVERT(VARCHAR(10), B) as MyColumn2 
UNION 
SELECT CONVERT(VARCHAR(10), C) as MyColumn, CONVERT(VARCHAR(10), D) as MyColumn2 
UNION 
SELECT CONVERT(VARCHAR(10), E) as MyColumn, CONVERT(VARCHAR(10), F) as MyColumn2