2017-08-08 15 views
1

私は結果を駆動するためにいくつかのselect文を使用していますが、私は2つのselect文を持っており、予約のための最小時間と予約のための最大時間を返します。しかし、最小値と最大値が同じ場合、私はwhere句の中から削除したい。Where句で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

必要あなたの説明に基づいて、知らない... – jarlh

答えて

2

HAVING clauseは、集約関数に使用されます。

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

あなたががあなたの述語で二重否定を使用している理由は、私はあなただけ左SQLは読み硬すぎる正当化<>

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