【发布时间】:2011-03-11 17:17:16
【问题描述】:
我有一个返回对象属性的查询。我想要的是将属性转入表格。我见过数据透视表曾经做过这样的事情,但只在数据透视表中的列上执行聚合函数的地方。我也看到过用 case 语句来做同样的事情。
由于您必须手动写出枢轴中的每一列,因此每个列的工作量相对相同。一种比另一种有什么优势和局限性?
【问题讨论】:
标签: sql case pivot-table
我有一个返回对象属性的查询。我想要的是将属性转入表格。我见过数据透视表曾经做过这样的事情,但只在数据透视表中的列上执行聚合函数的地方。我也看到过用 case 语句来做同样的事情。
由于您必须手动写出枢轴中的每一列,因此每个列的工作量相对相同。一种比另一种有什么优势和局限性?
【问题讨论】:
标签: sql case pivot-table
我同意肯的观点。我从不记得 PIVOT 语法没有提到 BOL,此外它不如旧学校的 case 语句灵活。你只能有一个聚合意味着不可能做类似的事情。
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。
【讨论】: