【发布时间】:2016-07-29 03:33:54
【问题描述】:
我想转置Select,但无法理解Pivot,我对许多教程中的以下内容更加困惑:
“如果源数据被正确规范化,就不需要转换列和行。如果您发现自己需要定期执行这种类型的转换,那么您的架构设计就有问题”。
具体而言,规范化如何使 Select 返回以下转置后的值:
SELECT
Date, Activity
FROM
EVENTS
WHERE
CITY = 'Seattle'
(即不是事件日期在第 1 列中下降,我希望将日期作为列进行)
【问题讨论】:
-
有多少个日期,数量会有所不同吗?这个问题的答案将决定您是否需要动态 SQL 来解决您的问题。
-
我猜引用的语句更多地是指非透视而不是透视。例如您可以使用“Seattle”、“SomeOtherCity”、“SomeOtherOtherCity”或类似的栏目来代替城市栏。规范化你的数据可以更容易地使用 PIVOT,因为你不必规范化它(UNPIVOT)然后 PIVOT,我猜。如果没有 PIVOT 语句,它不会完全启用 PIVOT。
标签: sql-server transpose database-normalization