在Oracle SQL表中的单独列中显示计数条件的结果
我有一个表,我正在使用GROUP BY生成一个单独列中的条件计数,该计数基于调用字母是否在表中以多种传播方法列出在Oracle SQL表中的单独列中显示计数条件的结果,sql,oracle,count,pivot,aggregate-functions,Sql,Oracle,Count,Pivot,Aggregate Functions,我有一个表,我正在使用GROUP BY生成一个单独列中的条件计数,该计数基于调用字母是否在表中以多种传播方法列出 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
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列中。我不太明白如何做到这一点,而不会导致“not a GROUP BY expression”错误。我认为您需要条件聚合:
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