2017-08-08 191 views
1

我正在使用多個select語句來驅動結果,但是我有2個select語句,它返回約會的最短時間和最大約會時間。但是,在最小和最大值相同的情況下,我想從我的where子句中刪除。在你的Where子句中使用Select Min和MAx

SELECT 
    APPOINTMENTS.userid, 
    users.LOCATIONID, 
    MIN(APPOINTMENTTIME) AS mintime, 
    MAX(APPOINTMENTTIME) AS maxtime 

FROM appointments 
WHERE APPOINTMENTDATE BETWEEN '2017-01-07' AND '2017-01-07' 
AND NOT mintime <> maxtime 
GROUP BY appointments.USERID, 
     users.LOCATIONID, 
     appointments.APPOINTMENTDATE 

我得到錯誤Mintime無效。

我相信,我需要一個新的子選擇,但不知道舉辦這個..

乾杯

+0

左對齊SQL是太難讀... – jarlh

回答

2

HAVING clause用於聚合函數,例如

HAVING NOT MIN(APPOINTMENTTIME) <> MAX(APPOINTMENTTIME) 

我不知道爲什麼你在你的謂語用雙重否定不過,根據您的描述,你只需要<>

HAVING MIN(APPOINTMENTTIME) <> MAX(APPOINTMENTTIME) 
+0

感謝您的快速響應,並且工作完美。以前沒有用過。將做一些關於這個功能的研究。總是學習:-)謝謝Garethd – HAS

0

請嘗試

select 
APPOINTMENTS.userid, 
users.LOCATIONID, 
min(APPOINTMENTTIME) as mintime, 
max(APPOINTMENTTIME) as maxtime 

from appointments 
where 
APPOINTMENTDATE between '2017-01-07' and '2017-01-07' 

group by 
appointments.USERID,users.LOCATIONID, 
appointments.APPOINTMENTDATE 
having min(APPOINTMENTTIME) <> max(APPOINTMENTTIME) 
1

試試這個按Sql Server的

 SELECT * FROM (
     select 
     APPOINTMENTS.userid, 
     users.LOCATIONID, 
     min(APPOINTMENTTIME) as mintime, 
     max(APPOINTMENTTIME) as maxtime 
     from appointments 
     where 
     APPOINTMENTDATE between '2017-01-07' and '2017-01-08' 

     group by 
     appointments.USERID,users.LOCATIONID, 
     appointments.APPOINTMENTDATE 
     )as t WHERE mintime <> maxtime