DB2在以下情况下使用CASE替换字符串

DB2在以下情况下使用CASE替换字符串,db2,Db2,我的问题是我连接了这些值​​列col2的,但在中,当时,我必须用值替换它们​​在中,然后。出于某种原因,当我将此代码放入查询时,我的代码不起作用,还有其他方法吗?在这种情况下,使用Replace好吗?你能举个例子吗 所以我的代码是: cte(col1, AliasCol) as (Select col1, CASE WHEN Replace(Replace( LISTAGG(DISTINCT CONCAT( ', ', col2)) WITHIN GROUP (

我的问题是我连接了这些值​​列col2的,但在
中,当
时,我必须用值替换它们​​在
中,然后
。出于某种原因,当我将此代码放入查询时,我的代码不起作用,还有其他方法吗?在这种情况下,使用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
。将“A”替换为“Z”,将“Y”替换为“B”,将“C”替换为“X”。

尝试以下方法:

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;
试试这个:

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;

你的问题不够清楚。编辑它并提供输入数据的样本,以及您想要的结果。您正在对值的子集使用LISTAGG,这将聚合组内的值。但在最后,您将它与单个字符值进行比较。。。对我来说没有意义@SamuelPizarro done.CXLSX,翻译是您的最佳选择,@Mark Barinstein回答了以下问题。您的问题不够清楚。编辑它并提供输入数据的样本,以及您想要的结果。您正在对值的子集使用LISTAGG,这将聚合组内的值。但在最后,您将它与单个字符值进行比较。。。对我来说没有意义@SamuelPizarro done.CXLSX,翻译是您的最佳选择,@Mark Barinstein回答道。