我有一张考试数据表,里面有几条简单的规则。考试有许多基于地理和大小的不同轨道。一个问题是可见的或不是基于名为visibility的布尔列,该列填充为“不可见”为零或“可见”为1。
问题| 追踪| 能见度
上面透视上面的代码如下所示:
SELECT *
Into Track_Pivoted
FROM Track_Creation
PIVOT
(
COUNT(Visibility)
FOR [Track] IN ([Question A],[Question B]) as _pivoted
问题是在结果表中Track_Pivoted问题A显示为North_Large显示1,我在其中选择的原始表中为0。
我觉得这应该是正确的,但不确定发生了什么。我上面的例子是我的实际数据的简化版本,它更像是40个轨道的几百个问题,但我觉得我已经准确地代表了这个问题。
非常感谢任何正确方向的帮助。
答案 0 :(得分:0)
原因是您使用COUNT
作为聚合函数。对于Question_A,它会看到North_Large的一行,因此它返回1.您可能希望将COUNT
更改为MAX
或SUM
。
答案 1 :(得分:0)
不确定您希望枢轴的方式,但您现有的查询有3个问题:
所以,这里有两个选择:
转向问题:
SELECT *
FROM Track_Creation
PIVOT
(
MAX(Visibility)
FOR [Question] IN ([Question_A],[Question_B])
) as pivoted
;
| TRACK | QUESTION_A | QUESTION_B |
|--------------|------------|------------|
| East_Med.... | 1 | 1 |
| North_Large | 0 | 1 |
| South_Small | 1 | 1 |
转向轨道:
SELECT *
FROM Track_Creation
PIVOT
(
MAX(Visibility)
FOR [Track] IN ([North_Large],[East_Med....],[South_Small])
) as pivoted
;
| QUESTION | NORTH_LARGE | EAST_MED.... | SOUTH_SMALL |
|------------|-------------|--------------|-------------|
| Question_A | 0 | 1 | 1 |
| Question_B | 1 | 1 | 1 |