首页 > 解决方案 > case 表达式只显示一次

问题描述

我有一个遇到困难的案例表达:

WHEN @CustomerID = 3 AND @OrderID = 2 AND @Name IN ('Hello') THEN 'Regular'
WHEN @CustomerID = 3 AND @OrderID = 2 AND @Telephone = 1 AND @Name IN ('Hello') THEN 'Business'

如果我有两个语句,它只会返回“常规”,但如果我取出“常规”,它会显示商业语句。我究竟做错了什么?

标签: sql-server

解决方案


如果您想要其中一个或两个,则它需要是两个单独的列,或者如果您想要一个列,则在其中包含两个输出:

任何一个:

case WHEN @CustomerID = 3 AND @OrderID = 2 AND @Name IN ('Hello') THEN 'Regular' end,
case WHEN @CustomerID = 3 AND @OrderID = 2 AND @Telephone = 1 AND @Name IN ('Hello') THEN 'Business' end

或者:

WHEN @CustomerID = 3 AND @OrderID = 2 AND @Telephone = 1 AND @Name IN ('Hello') THEN 'Regular, Business' 
WHEN @CustomerID = 3 AND @OrderID = 2 AND @Name IN ('Hello') THEN 'Regular'

推荐阅读