首先让我说“我确定有更简单的方法可以做到这一点,但我找不到它......”
我正在尝试根据记录中的 4 个独立值构建跟踪编号,以便我可以连接变量并将连接后的字符串插入到另一个表中。
DECLARE @fy char = '';
SET @fy = (SELECT proposalCallID,
CASE
WHEN proposalCallID IN (7, 8) THEN '19'
WHEN proposalCallID IN (5, 6) THEN '18'
END
FROM proposalPackage WHERE proposalCallID = 15)
我得到一个错误“当子查询没有用 EXISTS 引入时,只能在选择列表中指定一个表达式。”
跟踪号有 4 个部分,所以我有 4 个查询需要连接这些部分以构成完整的跟踪号。
感谢任何帮助。
最佳答案
这就是你想要做的吗?
DECLARE @fy char(2) = '';
SELECT @fy = (CASE WHEN proposalCallID IN (7, 8) THEN '19'
WHEN proposalCallID IN (5, 6) THEN '18'
END)
FROM proposalPackage
WHERE proposalCallID = 15;
请注意 @fy
的长度规范,因此该值适合。 始终在 SQL Server 中对字符类型使用长度规范。
根据逻辑,您可以完全不设置值。 CASE
表达式返回的值为NULL
,因此:
DECLARE @fy char(2);
效果完全一样。
关于sql - 如何使用 CASE 语句设置局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51156867/