2
我想重寫這段代碼而不使用任何if語句。如何在不使用if語句的情況下重寫?
有沒有可能這樣做?
我該如何使用大小寫或其他東西?
IF @BrandFilter = ''
BEGIN
SELECT * FROM
(
SELECT
ROW_NUMBER() OVER(ORDER BY
CASE WHEN @SortType = '1' THEN mt.Ad END ASC,
CASE WHEN @SortType = '2' THEN mt.Ad END DESC,
CASE WHEN @SortType = '3' THEN mt.Fiyat END ASC,
CASE WHEN @SortType = '4' THEN mt.Fiyat END DESC) AS RowNr, *
FROM @MainTable mt
WHERE mt.Fiyat > @MinPrice AND mt.Fiyat < @MaxPrice
) Result
WHERE RowNr > ((@PageNr-1) * 10) AND RowNr <= ((@PageNr) * 10)
END
ELSE
BEGIN
SELECT * FROM
(
SELECT
ROW_NUMBER() OVER(ORDER BY
CASE WHEN @SortType = '1' THEN mt.Ad END ASC,
CASE WHEN @SortType = '2' THEN mt.Ad END DESC,
CASE WHEN @SortType = '3' THEN mt.Fiyat END ASC,
CASE WHEN @SortType = '4' THEN mt.Fiyat END DESC) AS RowNr, *
FROM @MainTable mt
WHERE mt.Fiyat > @MinPrice AND mt.Fiyat < @MaxPrice
AND mt.MarkaId IN (SELECT bf.Data FROM dbo.Split(@BrandFilter, ',') bf)
) Result
WHERE RowNr > ((@PageNr-1) * 10) AND RowNr <= ((@PageNr) * 10)
END
這段代碼的區別,
AND mt.MarkaId IN (SELECT bf.Data FROM dbo.Split(@BrandFilter, ',') bf)
謝謝..
你是最棒的,我現在看到這個技巧。非常感謝.. –