DB2 中的 CASE 子句语句
CASE clause statement in DB2
我有一个 table 过程。目前它没有任何记录。如果 table 没有任何记录,我需要 return 一个硬编码行。
当主键列“id”为空时,我正在做一个 select 然后我硬编码值和 return 它如下
SELECT CASE WHEN p.ID IS NULL THEN 1 ELSE p.ID END ,
CASE WHEN p.COMPANY IS NULL THEN 'COMP1' ELSE p.COMPANY END
FROM PROCESS p
我参考了下面的link
但它总是 return 在 DB2 数据库中给我一个空行并且 不是 select 语句 中使用的硬编码值。
08:50:27 成功 SELECT 0.307 0.301 0 获取空结果集
08:50:29 完成 0.307 0.301 0 成功:1 失败:0
请帮我解决这个问题
没有办法以这种方式进行,因为主键永远不能为空。和 select * 从空 table return 没有行(0 行)它不 return null.
你可以这样做:
select ID, COMPANY from PROCESS
UNION ALL
select 1 as ID, 'COMP1' as COMPANY from sysibm.sysdummy1 where (select count(*) from PROCESS) = 0;
您可以通过多种方式实现(我认为)您想要的。这是一个
SELECT
COALESCE(ID,1) AS ID
, COALESCE(COMPANY,'COMP1') AS COMPANY
FROM
TABLE(VALUES 1) AS DUMMY(D)
LEFT JOIN
PROCESS
ON
1=1
我有一个 table 过程。目前它没有任何记录。如果 table 没有任何记录,我需要 return 一个硬编码行。 当主键列“id”为空时,我正在做一个 select 然后我硬编码值和 return 它如下
SELECT CASE WHEN p.ID IS NULL THEN 1 ELSE p.ID END ,
CASE WHEN p.COMPANY IS NULL THEN 'COMP1' ELSE p.COMPANY END
FROM PROCESS p
我参考了下面的link
但它总是 return 在 DB2 数据库中给我一个空行并且 不是 select 语句 中使用的硬编码值。 08:50:27 成功 SELECT 0.307 0.301 0 获取空结果集 08:50:29 完成 0.307 0.301 0 成功:1 失败:0
请帮我解决这个问题
没有办法以这种方式进行,因为主键永远不能为空。和 select * 从空 table return 没有行(0 行)它不 return null.
你可以这样做:
select ID, COMPANY from PROCESS
UNION ALL
select 1 as ID, 'COMP1' as COMPANY from sysibm.sysdummy1 where (select count(*) from PROCESS) = 0;
您可以通过多种方式实现(我认为)您想要的。这是一个
SELECT
COALESCE(ID,1) AS ID
, COALESCE(COMPANY,'COMP1') AS COMPANY
FROM
TABLE(VALUES 1) AS DUMMY(D)
LEFT JOIN
PROCESS
ON
1=1