根据最后一个FALSE布尔值选择最大值[T-SQL]

时间:2015-04-02 14:59:03

标签: sql sql-server sql-server-2008 tsql

我想通过IsOpen = FALSE的最新EndDate拉出最后一条记录“

WeekID   |      EndDate     |    IsOpen   |  TransmitDate  |

 1             2015-03-14         False      2015-03-15
 2             2015-03-20         False      2015-03-21
 3             2015-03-26         True       2015-03-27
 4             2015-04-02         True       2015-04-03

在这种情况下,我希望得到WeekID,EndDate,IsOpen,TransmitDate 但只显示具有false的LAST行而不是所有带false值的行。在这种情况下

WeekID   |      EndDate     |    IsOpen   |  TransmitDate  |
 2             2015-03-20         False      2015-03-21

我已经尝试将IsOpen的布尔值转换为整数,但我的逻辑是如何让它显示我需要的东西。

SELECT  WeekID, EndDate, IsOpen, TransmitDate FROM dbo.Weeks WHERE IsOpen = (SELECT max(cast(IsOpen as int)) FROM dbo.Weeks)

从我到目前为止所尝试的,这只会返回所有True值。

谢谢。

2 个答案:

答案 0 :(得分:1)

top 1order by组合将返回最后一行

SELECT top 1 WeekID, EndDate, [Open], TransmitDate
FROM dbo.Weeks 
WHERE [Open] = 0
order by EndDate desc

答案 1 :(得分:-1)

SQL Server中没有布尔类型。您希望将列与true / false比较为varchar'true'或'false'