在 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
我有一个 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