Pivot Function添加的行数超出预期
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pivot Function添加的行数超出预期相关的知识,希望对你有一定的参考价值。
我想不出一个更好的头衔,如果有人能想到更好的头衔,我愿意接受建议。
我有一个看起来像这样的表:
Source TableName Detail active_status RowCount
a table_one stuff active 500
b table_two stuff_2 active 750
c table_three stuff_3 inactive 1000
d table_four stuff_4 active 200
e table_five stuff_5 inactive 200
当我运行此查询时:
select [a], [b], [c], [d], [e]
from (select [source], [rowcount] from ParentStaged) as src_tbl
pivot
(
avg([rowcount])
for source in ([a], [b], [c], [d], [e])
) as pivot_tbl;
我得到这个结果:
a b c d e
500 750 1000 200 200
当我运行此查询时:
select [a], [b], [c], [d], [e]
from (select [source], [TableName], [rowcount] from ParentStaged) as src_tbl
pivot
(
avg([rowcount])
for source in ([a], [b], [c], [d], [e])
) as pivot_tbl;
我产生了这个结果:
a b c d e
500 null null null null
null 750 null null null
null null 1000 null null
null null null 200 null
null null null null 200
为什么是这样?
答案
我想我弄明白了为什么。
它与我在from子句中添加的列数无关,它与我正在添加的内容有关。
聚合根据我在from子句中列出的内容进行聚合来执行计算。 group by是根据我在聚合中使用的内容执行的。
如果我列出了其他组之间不常见的列,那么这就是导致出现空值的原因。
如果我列出了常见的列,则不会显示空值。
以上是关于Pivot Function添加的行数超出预期的主要内容,如果未能解决你的问题,请参考以下文章
休眠 - 批量更新从更新返回意外的行数:0 实际行数:0 预期:1