简体   繁体   English

SQL查询:如果x = 1则y选择所有位置

[英]SQL query: select all where if x=1 then y<z else if x=2 then y<w

I want to select all columns however if fuel = 1 then start date > '1 oct 2013' else if fuel = 0 then start date > '1 september'. 我想选择所有列,但是如果燃料= 1,则开始日期>'1 oct 2013',否则,如果燃料= 0,则开始日期>'9月1日'。

Using SQL server 2005. 使用SQL Server 2005。

I tried this.. 我尝试过这个

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

Is this the right way of going about it? 这是正确的做法吗?

Use the strength of the binary operators...! 使用二进制运算符的强度...!

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())))

How about something like 怎么样

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())))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM