0

我正在尝试创建一个报告,该报告检查返回数据的 SQL 语句,并根据结果集使用 Y/N 填充列。

我已经尝试使用 NVL 功能,但我认为我完全错过了这个函数的要点 - 下面的查询不返回任何行,所以没有“空值”,这就是 NVL 函数获胜的原因在我的情况下不起作用 - 我已经尝试过 COALESCE,但我无法理解嵌入式 SELECT 并调用一个虚拟的“DUAL”表。

在“没有返回行”的情况下,我可以采用一种方法来提供值吗?

SELECT
TO_CHAR(AR_WD_EVENTS.EVENT_ID)
FROM
AR_WD_EVENTS, AR_PI_SITE_BLOCKS
WHERE AR_WD_EVENTS.EVENT_BLOCK_ID = {!AR_PI_SITE_BLOCKS.SITE_ID}
AND TO_CHAR(AR_WD_EVENTS.EVENT_CONTRACT_ID) = 1555

这是 QB 语法 - '6. 百叶窗-事件'是上面SQL查询的名称,基本上我希望SQL语句返回一个对应的'事件ID',如果它没有找到'事件ID'则给出NULL/Zero/NA的值,这样我就可以在下面的 QBF 语句中使用它——因为它代表 SQL 查询工作正常,但只有当有一个值要返回时。

$QBFvalue = 'Y';

if ({%6. Shutters - Event} = 'N/A') $QBFvalue = 'N';

return $QBFvalue;

非常感谢

4

1 回答 1

1

如果您总是得到一个(单个事件 id)或零个结果,您可以使用 MAX 函数:

SELECT
MAX(TO_CHAR(AR_WD_EVENTS.EVENT_ID))
FROM
AR_WD_EVENTS, AR_PI_SITE_BLOCKS
WHERE AR_WD_EVENTS.EVENT_BLOCK_ID = {!AR_PI_SITE_BLOCKS.SITE_ID}
AND TO_CHAR(AR_WD_EVENTS.EVENT_CONTRACT_ID) = 1555

MAX函数Null在没有匹配行时返回EVENT_ID,当有一个匹配行时返回。

于 2013-12-17T09:25:28.100 回答