小编Kha*_*zar的帖子

SQL中使用带有GROUP BY的CASE的SQL.需要CASE值但获取行值

所以基本上有1个问题和1个问题:

1.问题 - 当我在一个表中有100列(并且没有设置键或uindex)并且我想加入或者选择该表时,我是否真的必须写出每个列名?

2.问题 - 下面的例子显示了1.问题和我的实际SQL语句问题

例:

A.FIELD1,
(SELECT CASE WHEN B.FIELD2 = 1 THEN B.FIELD3 ELSE null FROM TABLE B WHERE A.* = B.*) AS CASEFIELD1
(SELECT CASE WHEN B.FIELD2 = 2 THEN B.FIELD4 ELSE null FROM TABLE B WHERE A.* = B.*) AS CASEFIELD2
FROM TABLE A
GROUP BY A.FIELD1
Run Code Online (Sandbox Code Playgroud)

故事是:如果我没有将CASE放入其自己的select语句中,那么我必须将实际的rowname放入GROUP BY中,而GROUP BY不会将CASE中的NULL值分组,而是将实际值从行.因此,我必须加入或选择所有列,因为没有键,没有uindex,或者以某种方式找到另一种解决方案.

DBServer是DB2.

现在用语言和没有SQL来描述它:我有"订单项",可以分为"ZD"和"EK"(1 = ZD,2 = EK),可以按"经销商"分组.即使"订单商品"可以具有两个不同的"部分"(ZD,EK)中的一个,但是"ZD"和"EK"的字段/行始终都被填充.我需要分组来考虑"离开",并且只有当指定的"部门"(ZD或EK)正在改变时,我才想要创建一个新的组.

SELECT
(CASE WHEN TABLE.DEPARTEMENT = 1 THEN TABLE.ZD ELSE null END) AS ZD,
(CASE WHEN TABLE.DEPARTEMENT = 2 …
Run Code Online (Sandbox Code Playgroud)

sql db2 case where

9
推荐指数
1
解决办法
4万
查看次数

标签 统计

case ×1

db2 ×1

sql ×1

where ×1