提问人:AweSomeBody 提问时间:3/4/2023 最后编辑:Thom AAweSomeBody 更新时间:3/4/2023 访问量:115
在上一个 COALESCE 的另一个值中使用相同的表
Using the same table in another value from previous COALESCE
问:
我有结合了两个表的视图。select 请求的值之一必须位于其中一个表中,另一个值必须具有 null 作为此值。作为解决方案,我使用coalesce
COALESCE(tbl1.Val, tbl2.Val) As Val
我现在正在努力从获取 Val 的同一表中选择下一个值,因为它们在两者中可能不同/NULL。
我在伪中的想法
(if tbl1.Val = NULL then tbl1.Val2 else tbl2.Val2) as Val2
是否可以使用 sql 函数编写它?(IIF、ISNULL、NULLIF,...大概吧?
3 张桌子会有多复杂?
输入
tbl1.Val = NULL,
tbl2.Val = NULL,
tbl3.Val = 'VALUE'
tbl1.Val2 = 'NOT THIS ONE',
tbl2.Val2 = 'NOT THIS ONE',
tbl3.Val2 = 'THIS ONE'
预期
Val Val2
'Value' 'THIS ONE'
我尝试过这样的结构
IIF(tbl1.Val = NULL, tbl1.Val2, tbl2.Val2)
IIF(ISNULL(tbl1.Val, False), tbl1.Val2, tbl2.Val2)
答:
0赞
Adrian Maxwell
3/4/2023
#1
而不是尝试这样的案例表达式:IIF
CASE WHEN tbl1.Val IS NULL THEN COALESCE(tbl1.Val2, tbl2.Val2) END AS X
或
CASE WHEN tbl1.Val IS NOT NULL THEN COALESCE(tbl1.Val2, tbl2.Val2) END AS X
您还可以包括例如ELSE
CASE
WHEN tbl1.Val IS NULL THEN COALESCE(tbl1.Val2, tbl2.Val2)
ELSE some-expression-here
END AS X
但该表达式的数据类型必须与tbl1.Val2, tbl2.Val2
评论
null
表示未知或未定义的值;Nothing inc 等于 ;用null
null
is null
coalesce()
接受 2 个以上的参数并返回第一个非 null 值,例如 将返回 1coalesce(null, null, null, 1)