我怎样才能在……所有……到……成为我订单的第一名呢?由于unions 的原因,我不能在ORDER BY子句中使用CASE.我还认为IF/ELSE是这里的一个复杂因素.
这段代码生活在一个sp中,我最初并没有编写它.我被要求复制它并添加一个空值(原始脚本没有任何空值).
我的解决办法是在
SELECT
NULL as parameterValue,
CAST('--All--' as VARCHAR(50)) AS parameterLabel
现在我需要Null,-All--行始终位于结果的顶部,其余的结果都是parameterValue desc
我想让这个解决方案起作用,但我不知道如何使用IF/Else:
DECLARE
@MaxCampaignYear int,
@rptSection nvarchar(85) = 'Main',
@showAll bit = 0
SELECT
@MaxCampaignYear = MAX(campaignYearNum)
FROM
dbo.dimDate
IF @rptSection = 'Main'
SELECT
NULL as parameterValue,
CAST('--All--' as VARCHAR(50)) AS parameterLabel
UNION ALL
SELECT DISTINCT
campaignYearNum AS parameterValue,
CAST(campaignYearNum as VARCHAR(50)) AS parameterLabel
FROM
dbo.dimDate
WHERE
(
@showAll <> 0
or campaignYearNum <= @MaxCampaignYear --BI_DW.dbo.udfGetCampaignYear(getdate())
)
and campaignYearNum > 0
ORDER BY
parameterValue desc
ELSE
SELECT
BI_DW.dbo.udfGetCampaignYear(getdate()) as parameterValue,
BI_DW.dbo.udfGetCampaignYear(getdate()) as parameterLabel```