Sql 如何使存储过程更改SELECT上的返回值

Sql 如何使存储过程更改SELECT上的返回值,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我试图在不改变数据的情况下改变存储过程返回的内容。我试图让它在每次LinkItemType=3时返回1,但我总是得到语法错误。请帮忙 这是我的 DECLARE @ITEMTYPE Int SELECT TOP 1000 [DataID] ,[ContactServiceID] ,[LinkID] ,@ITEMTYPE WHEN [LinkItemType] = 3 THEN @ITEMTYPE = 1 ELSE @ITEMTYPE = [LinkIte

我试图在不改变数据的情况下改变存储过程返回的内容。我试图让它在每次LinkItemType=3时返回1,但我总是得到语法错误。请帮忙

这是我的

DECLARE @ITEMTYPE Int

SELECT TOP 1000 
    [DataID]
    ,[ContactServiceID]
    ,[LinkID]
    ,@ITEMTYPE
    WHEN [LinkItemType] = 3 THEN @ITEMTYPE = 1 ELSE @ITEMTYPE = [LinkItemType]
FROM 
    [BCM2010].[dbo].[EntityReferences]
WHERE
    dataid = 54
ORDER BY 
    LinkItemType DESC

劳伦斯说的是对的。您正在寻找的可能是:

(注意,我没有使用您的变量)


您没有提到哪个品牌的SQL,但请在[LinkItemType]=3时尝试
案例,然后在[LinkItemType]=1时尝试其他[LinkItemType]结束
我尝试过,但出于某种原因,LinkItemType=3的记录停止被选中。
SELECT TOP 1000 [DataID]
  ,[ContactServiceID]
  ,[LinkID]
  ,ITEMTYPE = CASE WHEN [LinkItemType] = 3 THEN 1 ELSE [LinkItemType] END
 FROM [BCM2010].[dbo].[EntityReferences]
 WHERE dataid = 54
 ORDER BY ITEMTYPE DESC