2015-09-28 101 views
0

如果满足条件,我想选择特定的元素。请看下面我的代码。我如何选择CASE子句中的数据?我的办法不起作用如果条件满足,选择参数

CREATE PROCEDURE [dbo].[GetUsers] 
@firstName varchar(100) = '', 
@isCounterSelected int, 
@countries dbo.tvp_stringArray READONLY 
AS 

BEGIN 
    SET NOCOUNT ON; 

SELECT [PK_UserID] AS Id 
     ,[UserNickName] 
     ,[description] 
     ,CASE 
     WHEN @isCounterSelected = 1 THEN (NULL AS MCount, NULL AS GCount, NULL AS CCount) 
     ELSE '' 
     END 
     FROM [dbo].[User_Existing]  
     WHERE (@firstName NOT LIKE '' AND firstName LIKE @firstName + '%') 
     AND Country IN (SELECT inputValue FROM @countries) 
+0

什么是你的问题? –

+0

对不起。我刚刚编辑过。 – Matt

+0

你现在可以检查你的CASE语句吗? – ProblemSolver

回答

1

我认为这将是有语法错误固定:

CREATE PROCEDURE [dbo].[GetUsers] 
@firstName varchar(100) = '', 
@isCounterSelected int, 
@countries dbo.tvp_stringArray READONLY 
AS 

BEGIN 
    SET NOCOUNT ON; 

SELECT [PK_UserID] AS Id 
     ,[UserNickName] 
     ,[description] 
     ,CASE 
     WHEN @isCounterSelected = 1 THEN NULL 
     ELSE '' 
     END AS MCount 
     ,CASE 
     WHEN @isCounterSelected = 1 THEN NULL 
     ELSE '' 
     END AS GCount 
     ,CASE 
     WHEN @isCounterSelected = 1 THEN NULL AS CCount 
     ELSE '' 
     END AS CCount 
     FROM [dbo].[User_Existing]  
     WHERE (@firstName NOT LIKE '' AND firstName LIKE @firstName + '%') 
     AND Country IN (SELECT inputValue FROM @countries) 
END 
+0

谢谢,但我不想在条件未满足时添加附加列 – Matt

+0

但这就是Sql的工作原理。如果你选择3行,那么我们也会有3个else子句。 – ProblemSolver

+0

我的意思是...当@isCounterSelected = 0我想选择只是PK_UserID,UserNickName和说明 – Matt