【发布时间】:2013-05-13 01:16:12
【问题描述】:
我正在尝试使用 CASE 语句编写 GROUP BY 子句,以便可以根据查询中的参数值有条件地进行 GROUP BY。这是我正在使用的查询(显着缩短),我不断收到“RVPname 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。并且 DVPname 无效并且 AEname 无效。
SELECT
DVPname, RVPname, AEname, Dealer, Product, Distribution,
CASE WHEN @LEVEL = 'DVP' THEN DVPname
WHEN @LEVEL = 'RVP' THEN RVPname
WHEN @LEVEL = 'AE' THEN AEname
END AS NAME
..........other code here.....
GROUP BY Product, Distribution,
CASE WHEN @LEVEL = 'RVP' THEN AEname WHEN @LEVEL = 'DVP' THEN RVPname WHEN @LEVEL= 'AE' THEN Dealer END
--有谁知道如何做我想要完成的事情。当 LEVEL='DVP' 我想 GROUP BY RVPname,当 LEVEL='RVP' 我想 GROUP BY AEname....有意义吗?
【问题讨论】:
-
“此处的其他代码”部分是否包含任何聚合,例如 sum()、min() 等?如果是这样,您必须按 select 子句中的所有内容进行分组。如果不是,group by 子句的目的是什么?
-
Group bycase 与selectcase 不同;它们应该相同才能正常工作。 -
其他代码只包含计算字段。
-
再一次,如果没有聚合,group by 子句的目的是什么?