2017-10-19 3 views
1

Dies ist eine Erweiterung einer anderen Frage: How to display null value when the record is present more than one time in oracle sqlAnzeige Nullwert mit Rang Funktionen in Oracle SQL

Ich habe eine Tabelle wie folgt vor:

c_id c_name  c_tax 

1001 Element1 1 
1001 Element1 2 
1001 Element2 1 
1001 Element2 2 
1002 Element3 null 
1002 Element4 1 
1002 Element4 2 

I null im ersten column(c_id) angezeigt werden soll, wenn es ist mehr als einmal und ja oder nein in der 3. column(c_tax) basierend auf der folgenden Bedingung vorhanden.

Element1 hat zwei Steuern 1 und 2. So sollte Element1 einmal angezeigt werden und c_tax sollte ja sein. Element3 hat keine Steuern, daher sollte es als null angezeigt werden.

sollte Meine Ausgabe aussehen wie folgt:

c_id c_name  c_tax 

1001 Element1 Yes 
null Element2 Yes 
1002 Element3 No 
null Element4 Yes 
+0

interne stackoverlow Links roh eingefügt werden sollten, anstatt Link-Formatierung verwenden. –

Antwort

1

Wenn ich das richtig verstanden:

select (case when row_number() over (partition by cid order by c_name) = 1 then cid end) as cid, 
     c_name, 
     (case when max(c_tax) is not null then 'yes' else 'no' end) as c_tax 
from t 
group by c_id, c_name 
order by c_id, c_name; 
+0

Nicht nur Sie richtig verstanden, ist Ihre Antwort perfekt. Vielen Dank @Gordon Linoff – Santosh