Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL:Как да добавяте стойности според колоните на индекса

Ако приемем само 1 ниво на йерархия. Ако има няколко нива на йерархия, това става по-интересно.

SELECT A.Value+coalesce(B.Value,0) as Value
     , A.Position
     , A.Relates_to_Position
     , A.Type
FROM Table A
LEFT JOIN Table B
  on B.Relates_To_Position = A.Position
WHERE A. Relate_to_Position is null

Това, което прави, е самостоятелно присъединяване, така че поставя свързани записи на един и същи ред. след това елиминира всички тези записи със стойност в relate_to_position, тъй като те ще бъдат добавени към родителски ред.

ние използваме LEFT съединение, защото не всички записи ще имат свързана стойност и използваме coalesce, за да гарантираме, че няма да се опитват да добавят null. (коалесцията приема първата ненулева стойност)

Не съм сигурен защо трябва да върнете relates_To_Position, тъй като той ВИНАГИ ще бъде нулев..



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да увеличим буфера dbms_output?

  2. В Oracle, как да проверя типа обект, използван от йерархия на обектен тип?

  3. Форматиране на колона за дата в javaFX TableView за данни, извлечени от Oracle DB

  4. Дата и час на Oracle във VB.net

  5. Не могат да се редактират конфигурационни файлове на OHS в Enterprise Manager