2011-03-11 50 views
4

我有一個返回對象屬性的查詢。我想要的是將屬性旋轉到表中。我已經看到數據透視表用於執行此類操作,但只能在數據透視表中的列上執行聚合函數。我也看過用於做同樣事情的病例陳述。關於Pivot vs Case的優點的問題

由於您必須手動寫出數據透視圖中的每個列,所以每個列的工作量相對相同。一個優於另一個的優點和侷限性是什麼?

回答

5

我同意肯。我從來沒有記住PIVOT的語法,但沒有引用BOL,另外它的靈活性也不如舊式的陳述。你只能有一個集合,這意味着不可能做類似的事情。

SELECT COUNT(CASE WHEN foo='bar' THEN foo END) AS bar_count, 
     SUM(CASE WHEN foo='bar' THEN foo END) AS bar_sum 
FROM your_table  
+0

+1指出PIVOT實際上不夠靈活。 – 2011-03-12 19:08:41

4

我試過了PIVOT並沒有看到任何優勢,你仍然需要指定每一列的名稱(如果我記得是兩次),並且語法遠不如case語句那麼直觀。

嘗試了幾次後,我又回到了CASE。