这是我的SP。我收到此错误 - “子查询返回的值超过 1 个。当子查询遵循 =、!=、<、<=、>、>= 或将子查询用作表达式时,这是不允许的。”
enter code here
ALTER PROCEDURE GetToDoDetails
@ClientID VARCHAR(MAX) = NULL
AS
DECLARE @Sql VARCHAR(MAX)
SET @ClientID = REPLACE(@ClientID,',',''',''')
SET @Sql=
'SELECT
C.ClientID,
C.ClientToDoID,
C.AssignedToID,
C.ToBeCompletedBy,
C.ToDoTypeID,
S.UDDescription,
(CL.LastName +'',''+ CL.FirstName) "Client Name",
(Select count(ClientID) from c_ToDo WHERE ClientID IN (''' + @ClientID+''') GROUP BY ClientID) "CountRow"
FROM c_ToDo C
INNER JOIN s_UserDefinedOptions S ON C.ToDoTypeID = S.UDID
INNER JOIN c_Client CL ON C.ClientID = CL.ClientID
WHERE
C.ClientID IN (''' + @ClientID + ''')
ORDER BY C.ClientID ASC'
EXEC (@Sql)
GO
如果我写
EXEC GetToDoDetails '1566'
,我得到了这个结果(参考图片)

现在如果我写
EXEC GetToDoDetails '1566,1697'
它显示了我所说的错误。在我的子查询中添加 TOP 1 作为
(Select TOP 1 count(ClientID) from c_ToDo WHERE ClientID IN (''' + @ClientID + ''')
我只为不同的客户端 ID(1566 和 1697)获取第一条记录的计数。(参考图片)

在 ClientID=1566 的第 45 条记录(1566 的总行数为 45)之后,我希望更改 ClientID=1697(即 63)的计数。我不知道如何处理这个问题。我是新手。请帮忙。