2013-07-26 3 views
2

Привет У меня есть ситуация в SQL следующим образом:SQL запрос для выборки данных

Имя таблицы: case_details

caseid refno clientid report_date 

1  1/1  1007  08-05-2013 
2  1/2  1007  01-06-2013 
3  1/3  1007  12-07-2013 
4  1/4  1012  17-07-13 
5  1/6  1009  08-07-13 

Имя таблицы: case_check_detail

caseid checkid alert_val 
1   1   1 
1   2   2 
1   3   1 
1   4   2 

2   5   4 
2   6   3 
2   7   2 
2   8   1 

3   9   2 
3   10  1 
3   11  2 
3   12  1 

4   13  3 
4   14  3 
4   15  3 
4   16  4 

5   17  1 
5   18  2 
5   19  1 
5   20  2 

Я хочу, чтобы подсчитать, сколько имеются случаи для clientid 1007, для которых самое высокое значение alert_val равно 2 в период с 01-05-2013 по 18-07-2013

Как и в этом случае его:

case id:1,caseid:3 
+0

может быть, вы могли бы относиться к этому: http://stackoverflow.com/questions/458364/fetch-data-with-single-and -fast-sql-query – Sabilv

ответ

1

Попробуйте

SELECT d.caseid 
    FROM case_details d JOIN case_check_detail c 
    ON d.caseid = c.caseid 
WHERE d.clientid = 1007 
    AND d.report_date BETWEEN '20130501' AND '20130718' 
GROUP BY d.caseid 
HAVING MAX(c.alert_val) = 2 

Выход:

 
| CASEID | 
---------- 
|  1 | 
|  3 | 

Если вы хотите считать их

SELECT COUNT(*) total 
    FROM 
(
    SELECT d.caseid 
    FROM case_details d JOIN case_check_detail c 
     ON d.caseid = c.caseid 
    WHERE d.clientid = 1007 
    AND d.report_date BETWEEN '20130501' AND '20130718' 
    GROUP BY d.caseid 
    HAVING MAX(c.alert_val) = 2 
) q 

Выход:

 
| TOTAL | 
--------- 
|  2 | 

Вот SQLFiddle демо

+0

op требует данных с максимальным значением alert_val как 2. не менее или равно 2. –

+1

@Praveen Согласен. Неправильно. Спасибо за ввод. Обновлен ответ и sqlfiddle. – peterm

+0

хорошо. Правильно. мой +1. –

0
SELECT COUNT(*) 
FROM case_check_detail AS ccd 
JOIN case_details AS cd ON cd.caseid=ccd.caseid 
WHERE alert_val=2 AND report_date BETWEEN '2013-05-01' AND '2013-07-18' 
+0

это вернет счет как 7 .. где, как ожидается ответ 2 –

Смежные вопросы