Utilisation de variables dans Oracle script

Il y a une requête complexe qui génère un rapport. La requête a plusieurs sous-requêtes qui génèrent 3-colonnes de la table pour les différents produits. Chaque sous-requête retourne une seule ligne. Toutes les lignes retournées ensuite besoin d'être unis.
Mais il y a une exigence. Si il n'existe pas de lignes de résultat pour une sous-requête, nous devons inclure le produit correspondant au rapport final de toute façon, mais préciser que Trades_Count est égal à zéro.

Je peux le faire en utilisant un ensemble de variables. Le code suivant fonctionne parfaitement dans MS SQL Server:

DECLARE @PRODUCT_NAME_1 nvarchar(100);
DECLARE @OFFER_VALID_DATE_1 datetime;
DECLARE @TRADES_COUNT_1 int;

DECLARE @PRODUCT_NAME_2 nvarchar(100);
DECLARE @OFFER_VALID_DATE_2 datetime;
DECLARE @TRADES_COUNT_2 int;

--Product 1 
select @PRODUCT_NAME_1 = PRODUCT_NAME, @OFFER_VALID_DATE_1 = MAX(EXPIRY_DATE), @TRADES_COUNT_1 = COUNT(DEAL_NUMBER)
from (
        --Data extractions with several joins goes here....

) as TempTable1
GROUP BY PRODUCT_NAME


--Product 2
select @PRODUCT_NAME_2 = PRODUCT_NAME, @OFFER_VALID_DATE_2 = MAX(EXPIRY_DATE), @TRADES_COUNT_2 = COUNT(DEAL_NUMBER)
from (
        --Data extractions with several joins goes here....
) as TempTable2
GROUP BY PRODUCT_NAME


SELECT ISNULL(@PRODUCT_NAME_1,'Product 1') AS PRODUCT_NAME, @OFFER_VALID_DATE_1 AS MAX_MATURITY, ISNULL(@TRADES_COUNT_1,0)
UNION
(
SELECT ISNULL(@PRODUCT_NAME_2,'Product 2') AS PRODUCT_NAME, @OFFER_VALID_DATE_2 AS MAX_MATURITY, ISNULL(@TRADES_COUNT_2,0)
)

Je pense que je n'ai pas utilisé quelque chose de ce T-SQL spécifique, mais par pure ANSI-SQL (je ne suis pas sûr à 100% si).

C'est donc pas de travail dans Oracle.

Tout d'abord, il nécessite d'avoir une seule clé DECLARE. Puis elle me force à l'aide de Commencer ... la Fin d'exécution de la portée. Alors il ne me permet pas d'attribuer des variables comme je le fais (voir l'exemple ci-dessus) – je besoin pour utiliser“, Sélectionnez DANS la” déclaration de la place. Après tous les calculs sont faits, il ne me permet pas de sélectionner les valeurs de variables locales. Heck.

Personne ne sait comment le faire fonctionner dans Oracle?

Merci!

OriginalL'auteur Bashir Magomedov | 2011-02-18