任何人都可以帮助解释以下sql语句的含义吗?
FROM
(
CSA.X_INITIATED_BY_PSID
||
CASE
WHEN (SELECT USER_FULLNAME
FROM TABLE_NAME
WHERE USER_PSID = CSA.X_INITIATED_BY_PSID) IS NULL
THEN \' - NA\'
ELSE \' - \'
||
(SELECT USER_FULLNAME
FROM TABLE_NAME
WHERE USER_PSID = CSA.X_INITIATED_BY_PSID
)
END INTITATED_BY
这是FROM
子句?我不这么认为。
如果您问它做什么,那么:它将CSA.X_INITIATED_BY_PSID
列值与]连接在一起>
table_name.user_fullname
,如果有一行其USER_PSID
等于先前提到的X_INITIATED_BY_PSID
NA
,如果没有这样的行例如:
SQL> with 2 -- sample data 3 csa (x_initiated_by_psid) as 4 (select 1 from dual union all 5 select 2 from dual 6 ), 7 table_name (user_psid, user_fullname) as 8 (select 1, 'Little' from dual 9 ) 10 -- your query 11 select c.x_initiated_by_psid ||' - '|| 12 case when (select t.user_fullname from table_name t 13 where t.user_psid = c.x_initiated_by_psid 14 ) is null then 'NA' 15 else 16 (select t.user_fullname from table_name t 17 where t.user_psid = c.x_initiated_by_psid 18 ) 19 end result 20 from csa c; RESULT ------------------------------------------------- 1 - Little 2 - NA SQL>
尽管,这可能是过于复杂的解决方案,因为外部联接的工作量较小:
SQL> with
2 -- sample data
3 csa (x_initiated_by_psid) as
4 (select 1 from dual union all
5 select 2 from dual
6 ),
7 table_name (user_psid, user_fullname) as
8 (select 1, 'Little' from dual
9 )
10 -- your query
11 select c.x_initiated_by_psid ||' - '|| nvl(t.user_fullname, 'NA') result
12 from csa c left join table_name t on t.user_psid = c.x_initiated_by_psid;
RESULT
-------------------------------------------------
1 - Little
2 - NA
SQL>
您未指定表的结构,因此我使用了一个最小的示例: