Bonjour à tous,
je vais commencer par vous présenter mes deux tables
Crédit Cod_Client
Montant
ID_Client Cod_Client
ID
Type_ID
-On a trois types ID
1- Carte identité
2- Passeport
3- Carte séjour
Donc un client peut avoir plus q'une ID dans la table 'ID_Client' mais un seul COD_Client qui est le clé primaire dans la table 'Crédit'.
J'ai crée une vue dont la requête est la suivante:
SELECT
DISTINCT (CASE WHEN (i.Type_ID =1) THEN 'Carte identité'
WHEN (i.Type_ID =2) THEN 'Passeport'
WHEN (i.Type_ID =3) THEN 'Carte séjour'
END ) as [TYPDOC], i.ID as NumID, C.Cod_Client, C.Montant From Credit as C LEFT OUTER JOIN ID_Client i on C.Cod_Client=i.Cod_Client
Mon problème c'est que si le client a plusieurs ID je veut seulement afficher la ligne qui possède l'ID la plus important (1 Plus important que 2 plus important que 3)
Mais il faudra d abord que la requete soit jouée, et donc faire:
SELECT * FROM ( SELECT DISTINCT (CASE WHEN (i.Type_ID =1) THEN 'Carte identité' WHEN (i.Type_ID =2) THEN 'Passeport' WHEN (i.Type_ID =3) THEN 'Carte séjour' END ) as [TYPDOC], i.ID as NumID, C.Cod_Client, C.Montant From Credit as C LEFT OUTER JOIN ID_Client i on C.Cod_Client=i.Cod_Client ) REQ WHERE ROWNUM=1
WITH T AS
(
SELECT CASE WHEN i.Type_ID =1 THEN 'Carte identité'
WHEN i.Type_ID =2 THEN 'Passeport'
WHEN i.Type_ID =3 THEN 'Carte séjour' END as TYPDOC,
i.ID as NumID, C.Cod_Client, C.Montant,
ROW_NUMBER() OVER(PARTITION BY ID ORDER BY Type_ID) AS N
From Credit as C
LEFT OUTER JOIN ID_Client i on C.Cod_Client=i.Cod_Client
)
SELECT * FROM T WHERE N = 1;
pour Limit 1; j'ai toujours un message d'erreur 'Syntaxe incorrecte vers 'limit'.'
31 oct. 2016 à 15:05
Mais il faudra d abord que la requete soit jouée, et donc faire:
31 oct. 2016 à 15:09
j'ai trouvé la solution
pour Limit 1; j'ai toujours un message d'erreur 'Syntaxe incorrecte vers 'limit'.'
31 oct. 2016 à 15:21