sql - 检查条件后连接 2 列
问题描述
我正在尝试将这 2 列“pv.name package_version_name”和“sf_li.sf_lma_version_number_c”连接起来,我试图将它与下面的 if 语句结合起来。
[Package_version_name] ([Version_Number]) 示例输出:Chicago Update 2 (14.4.2) 将抛出另一个示例,版本号:(13.0.10);package_version_name:芝加哥;输出/新列(版本发布):芝加哥(13.0.10)。在某些情况下 package_version_name 已经有两个字段连接示例 package_version_name: Brooklyn (9.5.14),所以我们可以在新列 (版本发布) : Brooklyn (9.5.14) 中单独输出它而不添加版本号,因为它是已经在那了。
sf_li.sf_lma_version_number_c AS version_number,
pv.name package_version_name,
IF( CONTAINS(pv.Name , ")"), pv.Name, pv.Name + "(" + sf_li.sf_lma_version_number_c + ")"),
FROM "prod"."salesforce"."sf_lma_license_c" sf_li
left join "prod"."salesforce"."sf_lma_package_version_c" pv
on sf_li.sf_lma_package_version_c=pv.id
解决方案
要运行的代码:
SELECT
CASE
WHEN package_version_name NOT LIKE '%(%' OR package_version_name NOT LIKE '%)%'
THEN CONCAT(
CONCAT(cast(package_version_name as char(200)),
cast('(' as char (200)))
,
CONCAT(cast(version_number as char(200)),
cast(')' as char(200)))
)
ELSE
package_version_name as final_version_field
FROM
[TABLE NAME] / from {{ref('[TABLE NAME]')}}
额外条件:
您还可以添加另一个条件,即:
WHEN package_version_name NOT LIKE '%(%' or package_version_name not like '%)%' AND IS_VARCHAR(package_version_name) = 'True'
这还将检查您是否没有括号,即(
并且)
值是 type varchar
。我用过IS_VARCHAR
雪花,你可以找到与你的 sql 相关的那个
推荐阅读
- entity-framework - 不使用 OnConfiguring(DbContextOptionsBuilder optionsBuilder) 无法构造 DbContext
- coq - IndProp:re_not_empty_correct
- angular - 如何将指纹扫描仪与前端 Angular 和后端 .NET (c#) Web App 集成
- c# - 使用 nuget pack 解决具有一些不安全代码的解决方案时出现错误
- javascript - 如何在 React/Node 中按顺序处理 api 调用承诺
- typescript - 类型“布尔”不可分配给“假”类型
- wpf - 如何正确设置此按钮与父 ListView ItemsControl 的绑定?
- log4j2 - 清除日志文件后,Log4j2 停止记录到日志文件
- postgresql - 是否有一个命令可以在 Postgresql 中为我提供逻辑查询计划概述?
- android - 为什么我得到一个日期而代码显示另一个