【发布时间】:2019-08-08 05:35:33
【问题描述】:
我正在尝试使用带有一个参数的存储过程将数据插入表中。该参数正在寻找俱乐部的名称。我希望 SP 找到属于该俱乐部的所有球员并将他们插入到 ClubNameTable 中。问题是当我运行 SP 时,它会将连接中的所有数据插入到表中,而不仅仅是当 case 语句为真时。
CREATE PROCEDURE SSIS.usp_ClubNameTable
-- Add the parameters for the stored procedure here
@NameOfClub nvarchar(200)
AS
BEGIN
TRUNCATE TABLE SSIS.ClubNameTable;
insert into ssis.ClubNameTable ([NameOfClub], [FirstName], [LastName])
SELECT
p.FirstName,
COUNT(p.LastName) as 'Number of Last Names',
CASE
WHEN @NameOfClub = 'Eagle Plate' THEN NameOfClub
WHEN @NameOfClub = 'Atlanta United FC' THEN NameOfClub
ELSE 'Please choose either Eagle Plate or Atlanta United FC'
end
FROM [Location].Club as C
JOIN [Location].ClubDetails as CD on c.ClubID = cd.ClubID
JOIN [Player].Player as P on CD.PlayerID = P.PlayerID
GROUP BY c.NameOfClub, p.FirstName, p.LastName
ORDER BY p.LastName ASC
declare
@RowCount int
SET @RowCount = (SELECT COUNT(*) FROM Location.Club)
END
GO
【问题讨论】:
-
请提供表格架构和 SP 代码。
-
如果没有实际看到存储过程的代码、示例数据和预期输出,很难判断问题是什么,请您提供这些吗?
-
对不起,我没有输入代码就按了 Enter,只是编辑了它。还有什么能让它更清楚的吗?
-
不要在表之间复制数据。每个玩家只能在数据库中存储一次。
-
这看起来像业务逻辑。在将其发送到 sql 之前执行此逻辑会更容易吗?
标签: sql database tsql case conditional-statements