Le code ci-dessous consiste à obtenir des données distinctes en termes de nom de colonne E1 et MDL, mais ne montre aucune reslut. J'ai mis "et Rownum dans (sélectionnez max (Rownum) de T1 .." Pour enlever la rangée diliquée.
Si je retirez "et Rownum in (sélectionnez max (rownum) de T1 ..", alors bien sûr tout le Données dans le tableau T1 sélectionné. P>
<Table and data>
CREATE TABLE T1 (
dte VARCHAR2(15),
gu1 VARCHAR2(15),
gu2 VARCHAR2(15),
eq VARCHAR2(15),
mdl VARCHAR2(15),
val VARCHAR2(15)
);
INSERT INTO T1 VALUES('20190801','30','30','E1','M1','1.5');
INSERT INTO T1 VALUES('20190801','30','30','E1','M1',NULL);
INSERT INTO T1 VALUES('20190801','30','30','E1','M1','0');
INSERT INTO T1 VALUES('20190802','30','30','E1','M1','1.5');
INSERT INTO T1 VALUES('20190803','30','30','E3','M1','3.0');
<Code>
SELECT gu1,gu2,eq,mdl
FROM T1
WHERE val <> '0' AND val IS NOT NULL
AND dte >= '20190801' AND dte <= '20190803'
AND gu1 = '30'
AND ROWNUM IN (SELECT MAX(ROWNUM) FROM T1 --to get only one among dulplicated rows in terms of column e1, mdl,
WHERE val <> '0' AND val IS NOT NULL
AND dte >= '20190801' AND dte <= '20190803'
AND gu1 = '30'
GROUP BY eq,mdl)
;
<Expexted result is>
GU1 GU2 EQ MDL
---- ---- ---- ----
30 30 E1 M1
30 30 E3 M1
3 Réponses :
Rownum est généré après la sortie de la ligne. Ce que vous pouvez faire à la place, c'est utiliser Row_Number fonction analytique comme suit
SELECT * FROM (
SELECT gu1,gu2,eq,mdl,row_number() over(partition by eq,mdl order by dte desc) as rnk
FROM T1
WHERE val <> '0' AND val IS NOT NULL
AND dte >= '20190801' AND dte <= '20190803'
AND gu1 = '30'
)x
WHERE x.rnk=1
Essayez d'utiliser Plus d'infos sur Sélectionner une instruction distincte code>. distinct code> Utiliser ici p> p>
Autant que je comprenne des données d'échantillons et de la sortie attendue, vous pouvez utiliser l'une des méthodes suivantes:
distinct code> - comme décrit dans la réponse VSMENT LI>
- en utilisant
rownum code> - comme décrit dans George Joseph Répondre Li>
- en utilisant
existe code> comme décrit après LI>
OL> - Dans l'exemple suivant, vous pouvez également utiliser avec comme code> pour supprimer l'excès de codage en double p> xxx pré> acclamations !! < / p> p>