我有一個返回對象屬性的查詢。我想要的是將屬性旋轉到表中。我已經看到數據透視表用於執行此類操作,但只能在數據透視表中的列上執行聚合函數。我也看過用於做同樣事情的病例陳述。關於Pivot vs Case的優點的問題
由於您必須手動寫出數據透視圖中的每個列,所以每個列的工作量相對相同。一個優於另一個的優點和侷限性是什麼?
我有一個返回對象屬性的查詢。我想要的是將屬性旋轉到表中。我已經看到數據透視表用於執行此類操作,但只能在數據透視表中的列上執行聚合函數。我也看過用於做同樣事情的病例陳述。關於Pivot vs Case的優點的問題
由於您必須手動寫出數據透視圖中的每個列,所以每個列的工作量相對相同。一個優於另一個的優點和侷限性是什麼?
我同意肯。我從來沒有記住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
我試過了PIVOT並沒有看到任何優勢,你仍然需要指定每一列的名稱(如果我記得是兩次),並且語法遠不如case語句那麼直觀。
嘗試了幾次後,我又回到了CASE。
+1指出PIVOT實際上不夠靈活。 – 2011-03-12 19:08:41