我想选择所有列,但如果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())))