[英]Insert into using a Case Statement
我正在嘗試使用具有一個參數的存儲過程將數據插入表中。 該參數正在尋找俱樂部的名稱。 我希望SP查找屬於俱樂部的所有球員,並將其插入ClubNameTable。 問題是,當我運行SP時,它會將聯接中的所有數據插入表中,而不僅僅是case語句為true時。
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
在列上使用case statement
不會對記錄進行任何過濾,它只是對要分配給該列的值應用條件。 為了過濾記錄,您需要使用帶有所需條件的where
子句:
CREATE PROCEDURE SSIS.usp_ClubNameTable
-- Add the parameters for the stored procedure here
@NameOfClub nvarchar(200)
AS
BEGIN
TRUNCATE TABLE SSIS.ClubNameTable;
if(@NameOfClub = 'Eagle Plate' or @NameOfClub = 'Atlanta United FC')
begin
insert into ssis.ClubNameTable ([NameOfClub], [FirstName], [LastName])
SELECT
p.FirstName,
COUNT(p.LastName) as 'Number of Last Names',
NameOfClub
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
Where C.NameOfClub = @NameOfClub
GROUP BY c.NameOfClub, p.FirstName, p.LastName
ORDER BY p.LastName ASC
declare
@RowCount int
SET @RowCount = (SELECT COUNT(*) FROM Location.Club)
end
else
begin
select 'Please choose either Eagle Plate or Atlanta United FC'
end
END
GO
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.