2011-04-27 81 views
0

在MSACCESS TRANSFORM我有一個表PIVOT在MSACCESS

1 Col1, Col2, Col3, Col4. 

我想使此列爲行如下所示使用SQL查詢優選使用PIVOT變換。任何幫助表示讚賞!

1 Col1, 
2 Col2 
3 Col3 
4 Col4 

回答

0

您需要使用UNION或UNION ALL查詢:

Select 1, Col1 From MyTable 
Union All 
Select 2, Col2 From MyTable 
Union All 
Select 3, Col3 From MyTable 
Union All 
Select 4, Col4 From MyTable 

UNION ALL將每個表返回行,即使它創建副本。 Union將有效地將結果組合在一起,以便以性能成本獲得唯一的行。

+0

謝謝,托馬斯。如果我使用Union,是否有任何性能問題?在這種情況下你有任何關於應用pivoting的想法嗎? – codematrix 2011-04-27 22:51:57

+0

@Vin - 取決於數據量。對於大多數系統來說,性能差異不會很大,但是如果表格非常大(因此您將大量數據結合在一起),它可能會有所不同。真正的問題是,你需要的是不要有重複和重複是否可能。如果這是真的,那麼使用聯盟是正確的答案。 – Thomas 2011-04-27 23:43:22

+0

至於重複,UNION ALL包含它們,UNION刪除它們(並且需要更多時間才能返回結果)。至於一般的表現問題,如果你所做的只是將結果以表格或報告的形式返回,那麼實際上並沒有一個。但是,如果您想要將WHERE子句應用於聚合集合,那麼您將遇到性能瓶頸,因爲索引無法使用。在這種情況下,用WHERE子句檢查所有四個字段(帶'OR')會更好。 – 2011-04-29 03:00:46