gpt4 book ai didi

sql - 使用 CASE 根据字符串列中的特定文本创建新列

转载 作者:行者123 更新时间:2023-12-03 00:20:24 25 4
gpt4 key购买 nike

我发现了几个类似的线程,但没有一个有效。我正在尝试在另一列满足特定条件时创建一个新列。

这是我正在使用的代码:

SELECT DISTINCT R.[Column1] AS Person, 
SUM(CASE WHEN R.[Event] = 'Event1' THEN 1 ELSE NULL END) AS Event1,
CASE (WHEN L.[Column2] LIKE '%String1%' THEN 'String1'
ELSE WHEN L.[Column2] LIKE '%String2%' THEN 'String2'
ELSE WHEN L.[Column2] LIKE '%String3%' THEN 'String3'
ELSE NULL END) AS NewColumn
FROM [Database1].[dbo].[Table1] R
LEFT JOIN
[Database1].[dbo].[Table2] L
ON R.[UniqueIdentifier] = L.[UniqueIdentifier]
WHERE L.[Column2] LIKE '%String1%'
OR L.[Column2] LIKE '%String2%'
OR L.[Column2] LIKE '%String3%'
GROUP BY R.[Column1], L.[Column2]
ORDER BY R.[Event1] DESC

如果我从第 2 列取出 CASE 语句,那么查询就可以正常工作。我想要的结果是三列:Person、String、Event...通过 Person 和 String 上的聚合来计数事件。

The error is: Msg 156, Level 15, State 1, Line 3 Incorrect syntax near the keyword 'CASE'.

最佳答案

您遇到了一些语法问题:

第一个问题是:CASE(WHEN

第二个问题是:ELSE WHEN

现在应该可以正常运行了:

SELECT DISTINCT
R.[Column1] AS Person,
SUM(CASE
WHEN R.[Event] = 'Event1'
THEN 1
ELSE NULL
END) AS Event1,
(CASE
WHEN L.[Column2] LIKE '%String1%'
THEN 'String1'
WHEN L.[Column2] LIKE '%String2%'
THEN 'String2'
WHEN L.[Column2] LIKE '%String3%'
THEN 'String3'
ELSE NULL
END) AS NewColumn
FROM [Database1].[dbo].[Table1] R
LEFT JOIN [Database1].[dbo].[Table2] L ON R.[UniqueIdentifier] = L.[UniqueIdentifier]
WHERE L.[Column2] LIKE '%String1%'
OR L.[Column2] LIKE '%String2%'
OR L.[Column2] LIKE '%String3%'
GROUP BY R.[Column1],
L.[Column2]
ORDER BY R.[Event1] DESC;

关于sql - 使用 CASE 根据字符串列中的特定文本创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45018423/

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