gpt4 book ai didi

sql - 在单个文本中将 SQL 表行与条件连接起来

转载 作者:行者123 更新时间:2023-12-04 21:46:11 27 4
gpt4 key购买 nike

我有一个像这样的 SQL

col1     col2      col3
1 0 1
1 1 1
0 1 1
1 0 0
0 0 0

我期待这样的输出

col1     col2      col3     NewCol
1 0 1 SL,PL
1 1 1 SL,EL,PL
0 1 1 EL,PL
1 0 0 SL
0 0 0 NULL

条件是 if col1>0 then SL else ' ', if col2>0 EL else ' ', if col3>0 PL else ' '

我尝试使用 Concatenate many rows into a single text string?却没能很好的达到预期的效果

我已经尝试过它可以很好地处理一条消息

Invalid length parameter passed to the LEFT or SUBSTRING function.

WITH CTE AS (
SELECT col1, col2, col3,
CASE WHEN col1 > 0 THEN 'SL,' ELSE '' END +
CASE WHEN col2 > 0 THEN 'EL,' ELSE '' END +
CASE WHEN col3 > 0 THEN 'PL,' ELSE '' END AS NewCol
FROM Employee
)
SELECT col1, col2, col3,
substring(NewCol, 1, len(NewCol) - 1) AS NewCol
FROM CTE

但是如果所有列都为 0,那么我的最后一个条件再次不匹配,那么我必须根据所需的输出显示 NULL

找到附加 fiddle http://sqlfiddle.com/#!6/2bd6a/1

最佳答案

您的代码示例的问题在于,当所有列都为 0 时,长度为 0,子字符串函数将抛出错误。

使用nullif 修复它:substring(NewCol, 1, len(nullif(NewCol,'')) - 1) AS NewCol

关于sql - 在单个文本中将 SQL 表行与条件连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32666890/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com