在 Oracle SQL table 的单独列中显示计数条件的结果

Show results of count condition in separate columns in Oracle SQL table

我有一个 table,我正在使用 GROUP BY 在单独的列中生成条件计数,具体取决于呼叫字母是否在 table 中列出以及更多不止一种传播方法。

 SELECT p.CallLetters, COUNT(p.PropMethod)
 FROM logpropmethod p
 GROUP BY p.CallLetters
 HAVING COUNT(p.PropMethod) > 1

这会生成以下结果:

 WIBC   3
 WQLZ   2
 WWVR   2
 CIBX   2
 WTTS   3
 WFBQ   2
 WCBH   2
 WKSV   2

我想要做的是在 GROUPBY 结果的单独列中列出传播方法。只有三种不同的传播方法,所以我设想结果列在 PROPMETHOD1、PROPMETHOD2、PROPMETHOD3 列中。我不太清楚如何在不导致“不是 GROUP BY 表达式”错误的情况下执行此操作。

我想你想要条件聚合:

SELECT CallLetters, COUNT(*) as total
    SUM(CASE WHEN PropMethod = 'PROPMETHOD1' THEN 1 ELSE 0 END) as PROPMETHOD1,
    SUM(CASE WHEN PropMethod = 'PROPMETHOD2' THEN 1 ELSE 0 END) as PROPMETHOD2,
    SUM(CASE WHEN PropMethod = 'PROPMETHOD3' THEN 1 ELSE 0 END) as PROPMETHOD3
FROM logpropmethod
GROUP BY CallLetters
HAVING COUNT(*) > 1