[英]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.