2014-01-24 38 views
0

我正在开发一个使用vb.net2008和数据库作为msaccess的应用程序。我在数据库中设计了一个表,其格式为HH:MM:SS,列为IN_TIME和OUT_TIME。我想要一个结果作为TOT_TIME,它将显示这两列之间的差异。我已经为此写了一个查询,现在我正面临一个问题,即如果IN_TIME小于8:00:00 AM,那么显示结果时我不想显示结果。我已经使用CASE WHEN,但它没有奏效,帮助我。在CASE中执行列操作当sql查询中的语句条件时

我已经试过这到目前为止

SELECT * 
    (CASE WHEN LATE_LIMIT > '" + date3 + "' 
    THEN ROUND(([PM_OUT]-[OVERIME_LIMIT]),2) 
    ELSE 'N')AS OverTime 
FROM DTR_REC 
+0

是否缺少END即CASE当事情>的东西那么就有结束,因为一些 – JsonStatham

+0

不msacess支持“WHERE In_time的> 08:00:00' ”,如SQL? – Peter

+2

这是Access还是SQL Server问题?这个问题没有提到SQL Server,但你是这样标记了这篇文章?无论如何,Access不支持'CASE'语句,所以你的选择是使用'IIF'或'SWITCH'。看到这篇文章的例子,你如何做到这一点:https://stackoverflow.com/questions/15774078/is-it-possible-to-using-select-case-statement-in-access-query – jpw

回答

0

你缺少一个逗号和END情况下:

SELECT * 
    ,(CASE WHEN LATE_LIMIT > '" + date3 + "' 
    THEN ROUND(([PM_OUT]-[OVERIME_LIMIT]),2) 
    ELSE 'N' END)AS OverTime 
FROM DTR_REC 

但我不知道,如果Access支持CASE语句。如果不是这是否工作:

SELECT * 
    ,IIF(LATE_LIMIT > '" + date3 + "', ROUND(([PM_OUT]-[OVERIME_LIMIT]),2),'N') AS OverTime 
FROM DTR_REC 
+1

为了记录,不,Access SQL不支持'CASE [WHERE]'构造。 Access SQL中可能的替代方法是'Switch()'和'IIf()'函数。 –