将枢轴上的计数转换为位/标志?

Posted

技术标签:

【中文标题】将枢轴上的计数转换为位/标志?【英文标题】:Convert count on a pivot to a bit / flag? 【发布时间】:2021-01-24 07:09:06 【问题描述】:

我有一个有效的数据透视查询:

SELECT * FROM
    (
        select [cid], [cid] as c, [Category] from [MyTbl] where [Conditional] = 0
    )
as src PIVOT(COUNT(c) FOR [Category] in ([SciFi],[Horror],[Comedy])) AS piv

太棒了,它会产生这样的东西:

cid | SciFi | Horror | Comedy
-----------------------------
 1      0        3       0
 2      1        2       1
 3      6        2       4

但实际上我不想要计数,我只想要一个真或假标志(最好是 0 或 1)

cid | SciFi | Horror | Comedy
-----------------------------
 1      0        1       0
 2      1        1       1
 3      0        1       1

我尝试将 count(c) 位包装在 case 语句中,但我只是遇到语法错误 - 假设枢轴不是那样工作的。

【问题讨论】:

【参考方案1】:

我会推荐条件聚合。它比特定于供应商的pivot 语法更加灵活,让您可以轻松地做自己想做的事:

select cid,
    max(case when category = 'SciFi'  then 1 else 0 end) SciFi,
    max(case when category = 'Horror' then 1 else 0 end) Horror,
    max(case when category = 'Comedy' then 1 else 0 end) Comedy
from mytbl
where conditional = 0
group by cid

【讨论】:

以上是关于将枢轴上的计数转换为位/标志?的主要内容,如果未能解决你的问题,请参考以下文章

STM32的滴答定时器的计数到0时标志位置1,需要软件清除标志位吗!,还是硬件自动清除

将十进制数转换为标志值

Pyspark 数据帧,在标志之间迭代,基于组

python 将rgb值转换为Maya标志的0.0-1.0值

按标志检索与时间相关的数据统计(计数),按外部 id 拆分,跨多个表,在一个数据集中返回

电路板上各种标志的含义