UNION の形式で複数のクエリがあります
クエリの 1 つで、値をチェックするために where 句に Case ステートメントが必要です。@CategoryID
私の条件は、if @CategoryID <> 0 then @CategoryID = 0 です。
@CategoryID =0
注: unionのステートメントの1つが実際の値を必要とするため、渡すことはできません。
@CategoryID
categoryid が 0 でない場合、for last ステートメントのみを 0 にリセットする必要があります。
エラーを生成する if ステートメントを使用してみました & エラーを生成する where 句で case ステートメントも試しました。@CategoryID =0
ストア プロシージャの for last sql ステートメントをリセットできるように、この点で助けていただければ幸いです
ALTER PROCEDURE [dbo].[usp_GetBannerByIDsAPICPL]
@ArticleID int,
@PageID int,
@IssueID int,
@CategoryID int,
@BannerLayoutPosition int,
@LangID int
AS
BEGIN
SET NOCOUNT ON
-- will show artile related banner
SELECT BannerID, BannerName, '../images/Banners/' +BannerImageFile AS ImagePath,BannerURL,BannerLocation FROM Banner_Manager
WHERE ArticleID = @ArticleID AND BannerLocation = @BannerLayoutPosition AND LanguageID=@LangID AND Active = 1
UNION ALL
-- show banner by category & Issue
SELECT BannerID, BannerName, '../images/Banners/' +BannerImageFile AS ImagePath ,BannerURL,BannerLocation FROM Banner_Manager
WHERE CategoryID = @CategoryID AND IssueID = @IssueID AND BannerLocation = @BannerLayoutPosition
AND LanguageID=@LangID AND Active = 1
UNION ALL
-- show banner by category
SELECT BannerID, BannerName, '../images/Banners/' +BannerImageFile AS ImagePath ,BannerURL,BannerLocation FROM Banner_Manager
WHERE CategoryID = @CategoryID AND BannerLocation = @BannerLayoutPosition
AND LanguageID=@LangID AND Active = 1
UNION ALL
-- will show page related banner
SELECT BannerID, BannerName, '../images/Banners/' +BannerImageFile AS ImagePath,BannerURL,BannerLocation FROM Banner_Manager
WHERE PageID = @PageID AND BannerLocation = @BannerLayoutPosition AND LanguageID=@LangID AND Active = 1
UNION ALL
--will show issue related banner
-- Need To Check if @CategoryID is not 0 if it is not 0 then i have to set the @CategoryID = 0
SELECT BannerID, BannerName, '../images/Banners/' +BannerImageFile AS ImagePath,BannerURL,BannerLocation FROM Banner_Manager
WHERE IssueID = @IssueID AND CategoryID = @CategoryID AND BannerLocation = @BannerLayoutPosition AND LanguageID=@LangID AND Active = 1
END