db2 - DB2 使用 CASE 替换字符串时
问题描述
我的问题是我将列 col2 的值连接起来,但When
我必须将它们替换为Then
. 出于某种原因,当我将此代码放入查询中时,我的代码不起作用,还有其他方法吗?在这种情况下使用 Replace 会好吗?你能举个例子吗?
所以我的代码是这个:
cte(col1, AliasCol) as
(Select col1,
CASE
WHEN Replace(Replace( LISTAGG(DISTINCT CONCAT( ', ', col2)) WITHIN GROUP
(ORDER BY CONCAT( ', ',col2)),',',''),' ','') = 'A' THEN 'Z'
WHEN Replace(Replace( LISTAGG(DISTINCT CONCAT( ', ', col2)) WITHIN GROUP
(ORDER BY CONCAT( ', ', col2)),',',''),' ','') = 'B' THEN 'Y'
WHEN Replace(Replace( LISTAGG(DISTINCT CONCAT( ', ', col2)) WITHIN GROUP
(ORDER BY CONCAT( ', ', col2)),',',''),' ','') = 'C' THEN 'X'
END
FROM Table
Where
col2 IN ('A','B','C','D')
and col >= (select TodaysDate from Date)
GROUP By col1
)
我的输出应该是:ZYXD
编辑:
我的col2
专栏显示所有代码,如下所示:
A
B
C
D
在我将它们连接到这个之后ABCD
,值ABCD
应该被替换为ZYXD
. 用“Z”替换“A”,用“B”替换“Y”,用“X”替换“C”。
解决方案
尝试这个:
WITH MYTAB(COL1, COL2) AS
(
VALUES
(1, 'A')
, (1, 'A')
, (1, 'B')
, (1, 'C')
, (1, 'D')
)
SELECT
COL1
, TRANSLATE(LISTAGG(DISTINCT COL2) WITHIN GROUP (ORDER BY COL2), 'ZYX', 'ABC') MY_OUT
FROM MYTAB
GROUP BY COL1;
推荐阅读
- php - 使用 PHP 的电报和自动回复
- c# - RotateTransform 是如何工作的?我可以更改矩形上旋转的点吗?
- html - 设置明确没有没有,必须有间隙?
- visual-studio-code - NodeMCU 和 VS 代码
- python - 为什么我的变量被其他变量“覆盖”?
- python - Altair 条形图 - 如何显示缺失的类别
- c# - 如果鼠标在点击后移动,如何取消鼠标输入的点击触发?
- kotlin - Kotlin:为什么 *unresolved reference* 用于密封类的子类的构造函数参数
- powershell - PowerShell 中使用 PSScriptAnalyzer 的 OutputType 属性警告
- javascript - 如何在 HTML 中的视频上添加按钮?