关于Pivot vs Case的优点的问题

时间:2011-03-11 17:17:17

标签: sql case pivot-table

我有一个返回对象属性的查询。我想要的是将属性转移到表中。我已经看到用于执行此类操作的数据透视表,但仅限于在数据透视表中的cols上执行聚合函数的情况。我也看过用于做同样事情的案例陈述。

由于您必须手动写出数据透视表中的每一列,因此每个列的工作量相对相同。一个人的优势和局限是什么?

2 个答案:

答案 0 :(得分: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     

答案 1 :(得分:4)

我已经尝试了PIVOT并且没有看到任何优势,你仍然需要指定每一列的名称(如果我记得的话两次),并且语法远不如case语句那么直观。

尝试几次后,我回到了CASE。