2013-07-26 4 views
2

Salut, j'ai une situation sql comme suit:requête SQL pour les données fetching

nom de la table: 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 

nom de la table: 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 

Je veux compter combien de les cas sont là pour clientid 1007 pour qui la plus haute valeur de alert_val est 2 entre 01-05-2013 au 18-07-2013

Comme dans ce cas son:

case id:1,caseid:3 
+0

vous pourriez peut-être se référer à ceci: http://stackoverflow.com/questions/458364/fetch-data-with-single-and -fast-sql-query – Sabilv

Répondre

1

Essayez

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 

Sortie:

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

Si vous voulez les compter

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 

Sortie:

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

Voici SQLFiddle Démo

+0

op nécessite des données ayant un maximum de alert_val comme 2. pas inférieur ou égal à 2. –

+1

@Praveen Accepted. Mal interpréter. Merci pour la contribution. La réponse et sqlfiddle mis à jour. – peterm

+0

bien. J'ai bien compris. mon +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

cela retournera compte comme 7 .. où comme réponse attendue est 2 –

Questions connexes