0
votes

Comment calculer dans PL / SQL Oracle?

J'ai 2 colonnes, chaque colonne a 2 rangées. Par exemple xxx

de sorte que je voudrais calculer comme ceci xxx

montre xxx


3 commentaires

Related: Stackoverflow.com/Questtions/44366341/...


Je pense que vous devez fournir plus de contexte, je ne peux pas penser à un problème réel mondial quelque chose comme ça.


Et s'il y a trois rangées?


5 Réponses :


1
votes

Utilisation de max () code> et min () code> Fonctions agrégées:

SELECT MAX(A) - MIN(A) AS "Total A",
       MAX(B) - MIN(B) AS "Total B"
FROM TableName


4 commentaires

Si les secondes sont inférieures à la première rangée? que se passe-t'il


Cela ne dépendra pas de la commande à la ligne, il ne s'agit que de la maxvalue - Minvalue. Veuillez vérifier le Demo


Mais j'utilise toujours des secondes rangées avant la première rangée à chaque fois


Ensuite, vous devez utiliser Réponse de Barbaros Özhan . Travailler Demo



-1
votes

Vous pouvez essayer ceci comme ci-dessous xxx

espère que cela aide.


0 commentaires

1
votes

dépend de ce que vous voulez vraiment gérer. Si le problème est lié à la différence entre les lignes consécutives, à l'aide de LEAD () code> ou lag () code> Les fonctions analytiques de fenêtre peuvent être une manière intelligente:

with t( a, b ) as
(
 select 100, 200 from dual union all 
 select 200, 300 from dual 
), t2 as
(
select lead(a) over (order by 1) - a as "Total A",
       lead(b) over (order by 1) - b as "Total B",
       row_number() over (order by 1) as rn
  from t        
)
select *
  from t2
 where rn = 1;

Total A  Total B    RN
100      100        1


1 commentaires

@ChawinThapongaiemmongkolsakul est le bienvenu. Veuillez envisager d'accepter l'une des réponses que vous pensez le plus utile.



-1
votes

BRO LIRE EST Deux compréhension de votre question Vous souhaitez d'abord supprimer de la valeur maximale et quelle solution vous est fournie par quelqu'un d'autre et d'autres que vous souhaitez supprimer de la dernière ligne / deuxième rangée. La solution vous est donc fournie pour une deuxième approche. Veuillez discuter de la requête.

select sum(Result.A) as A, sum(Result.B) as B, from (
    select top 1 A , B from Table_name order by id_row_order desc
    union all
    select top 1 - A , -B from Table_name order by id_row_order Asc
) as Result


2 commentaires

Oracle ne prend pas en charge la syntaxe top .


Je pense que * - * z



0
votes

Vous pouvez la questionner comme ceci, xxx


0 commentaires