【发布时间】:2021-12-30 07:07:56
【问题描述】:
我正在尝试使用Case 语句将数据插入到临时表中,下面是我的代码,因此我收到此错误
子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
我无法弄清楚我做错了什么。这是根据Case 语句中提供的特定条件将数据插入临时表的正确方法吗?
DECLARE @temp_idCol TABLE
(
uid int IDENTITY(1, 1),
id nvarchar(20)
)
DECLARE @_ThresholdOperator nvarchar(20) = '=',
@_Threshold_Val nvarchar(20) = '0.4'
INSERT INTO @temp_idCol (id)
SELECT
CASE
WHEN @_ThresholdOperator = '='
THEN (SELECT q.id
FROM [dbo].[Summit_Twitter_HashtagDetails] q
WHERE q.Ticket_ID IS NULL
AND q.SentimentAnalyis_Score = @_Threshold_Val
OR q.IsProcessedOrNot = 0)
WHEN @_ThresholdOperator = '>'
THEN (SELECT q.id
FROM [dbo].[Summit_Twitter_HashtagDetails] q
WHERE q.Ticket_ID IS NULL
AND q.SentimentAnalyis_Score > @_Threshold_Val
OR q.IsProcessedOrNot = 0)
WHEN @_ThresholdOperator = '<'
THEN (SELECT q.id
FROM [dbo].[Summit_Twitter_HashtagDetails] q
WHERE q.Ticket_ID IS NULL
AND q.SentimentAnalyis_Score < @_Threshold_Val
OR q.IsProcessedOrNot = 0)
END AS id
FROM
[dbo].[Summit_Twitter_HashtagDetails]
【问题讨论】:
-
case 是返回标量值而不是控制流语句的表达式
标签: sql sql-server