Devo interrogare da un oracle 11
db. Con la query qui sotto ottengo tutti i recenti TAG_VALUE, TAG_DESC, INSERTION_DATE and PROJECT_ID
dal mio database.Interrogare solo valori numerici il più presto possibile
SELECT *
FROM (SELECT t.tag_value,
t.tag_desc,
u.update_as_of AS INSERTION_DATE,
p.proj_id AS PROJECT_ID,
Row_number()
over(
PARTITION BY p.proj_id
ORDER BY u.update_as_of DESC) RN
FROM project p
join update u
ON p.project_id = u.project_id
join tag t
ON t.tag_id = u.tag_id
WHERE t.tag_desc LIKE 'Equity%')
WHERE rn = 1;
Tuttavia, mi sono imbattuto i casi che la risposta della mia richiesta (senza smistamento per data) può apparire come quello:
+----------------------------------------------+
| TAG_VALUE TAG_DESC INSERTION_DATE PROJECT_ID |
+----------------------------------------------+
| null Equity 14-DEC-14 1 |
| 0 Equity 14-DEC-14 1 |
| 312 Equity 14-DEC-14 1 |
| 23343 Equity 17-DEC-11 5 |
| 1263 Equity 16-DEC-11 5 |
| null Equity 22-JÄN-14 2 |
| null Equity 11-JÄN-14 2 |
| null Equity 25-SEPT-13 2 |
| 0 Equity 20-SEPT-13 2 |
| 1234 Equity 19-SEPT-13 2 |
| 13415 Equity 18-SEPT-13 2 |
| 99999 Equity 16-OCT-10 9 |
+----------------------------------------------+
mio Result Set
dovrebbe essere simile che:
+----------------------------------------------+
| TAG_VALUE TAG_DESC INSERTION_DATE PROJECT_ID |
+----------------------------------------------+
| 312 Equity 14-DEC-14 1 |
| 23343 Equity 17-DEC-11 5 |
| 1234 Equity 19-SEPT-13 2 |
| 99999 Equity 16-OCT-10 9 |
+----------------------------------------------+
Ci sono due casi, che fondamentalmente si concentrano sullo stesso problema:
- Come potete vedere ci sono due casi, quando la
project_id = 1
la data di inserimento è sempre la stessa. Tuttavia, con la mia domanda di cui sopra ho ancoranull
indietro a causa delloordering
. Come posso recuperare il numero312
senza ottenere il valorenull
o il valore0
? - Se
projectID = 2
ci sono diverse date di inserimento e le date precedenti hanno come elementiTAG_VALUE
null
. Tuttavia, mi piacerebbe avere lotagValue
di| 1234 Equity 19-SEPT-13 2 |
, perché è l'ultimo valore?
Come, posso praticamente ignorare i valori tutti null
e anche 0
valori e solo prendere il numerica, che è maggiore di 0
valore con la prima data?
Ho davvero apprezzato la tua risposta!
Si prega di correggere la richiesta: DAL progetto p DA aggiornato u – Rusty
TAG_VALUE è un VARCHAR2 o un NUMERO? Sembra un modello EAV e, se stai usando un tipo di dati generico, la risposta sarà molto più complicata. –
@JonHeller Il TAG_Value è NUMERICO. Cosa intendi per modello EAV? – mrquad