SQL查询:全选,如果x=1,则y<z否则如果x=2,则y<w



我想选择所有列,但如果fuel=1,则开始日期>"2013年10月1日",否则如果fuel=0,则开始时间>"9月1日。

使用SQL server 2005。

我试过这个。。

SELECT * FROM   EntitlementEpisode
WHERE
    IF EnFuel = 1
        THEN
            IF
                BEGIN
                    [EnEpisodeStart] > 
                    (SELECT TOP 1 [BeYearStart] 
                    FROM [BenefitYear] ORDER BY [BeId] desc)
                END
            ELSE IF EnFuel = 0
       THEN
            IF
                 BEGIN
                      [EnEpisodeStart] > 
                      CONVERT(VARCHAR(30), '1 OCT' + YEAR(GETDATE()))
            END

这是正确的做法吗?

使用二进制运算符的强度。。。!

SELECT * 
FROM   EntitlementEpisode
WHERE
   (EnFuel=1 AND EnEpisodeStart] > 
                (SELECT TOP 1 [BeYearStart] 
                FROM [BenefitYear] ORDER BY [BeId] desc))
   OR
   (EnFuel=0 AND [EnEpisodeStart] > 
                  CONVERT(VARCHAR(30), '1 OCT' + YEAR(GETDATE())))

像这样的东西怎么样

SELECT  * 
FROM    EntitlementEpisode
WHERE   (EnFuel = 1 AND [EnEpisodeStart] > (SELECT TOP 1 [BeYearStart] FROM [BenefitYear] ORDER BY [BeId] desc)
OR      (EnFuel = 0 AND [EnEpisodeStart] > CONVERT(VARCHAR(30), '1 OCT' + YEAR(GETDATE())))

相关内容

最新更新