有条件地在select语句中附加一个字符

时间:2012-05-11 19:07:24

标签: sql stored-procedures db2

功能我试图添加到我的DB2存储过程:

    Select a MIN() date from a joined table column.
    IF there was more than one row in this joined table, append a " * " to the date.

谢谢,非常感谢任何帮助或指导。

2 个答案:

答案 0 :(得分:1)

目前尚不清楚需要哪种DB2风格,也不清楚是否有任何建议。这适用于DB2 for i:

SELECT
 T1.joinCol1,
 max( T2.somedateColumn ),
 count( t2.somedateColumn ),
 char(max( T2.somedateColumn )) concat case when count( T2.somedateColumn )>1 then '*' else '' end 
 FROM joinFile1 t1 join joinFile2 t2
           on joinCol1 = joinCol2
 GROUP BY T1.joinCol1
 ORDER BY T1.joinCol1

SQL非常通用,因此它应该转换为许多环境和版本。

根据需要替换表名和列名。这里的COUNT()实际上是从JOIN计算行而不是特定日期出现的次数。如果需要重复日期计数,则还需要对此示例进行一些更改。

答案 1 :(得分:0)

希望这有帮助

说我有结果


1   Jeff    1
2   Jeff    333
3   Jeff    77
4   Jeff    1
5   Jeff    14
6   Bob     22
7   Bob     4
8   Bob     5
9   Bob     6

这里值1重复两次(在3列中)

因此,此查询将计数与*以及与其连接的

一起计为2

SELECT A.USER_VAL, DECODE(A.CNT, '1', A.CNT, '0', A.CNT, CONCAT(A.CNT, '*')) AS CNT FROM (SELECT DISTINCT BT.USER_VAL, CAST(COUNT(*) AS VARCHAR2(2)) AS CNT FROM SO_BUFFER_TABLE_8 BT GROUP BY BT.USER_VAL) A