Bonjour à tous,
Je suis en face du problème suivant. J'aimerai créer une requête en oracle avec un paramètre qui peut prendre plusieurs valeurs. Mais seulement ma syntaxe est incorrecte.
Il s'agit de rentrer plusieurs customer_group (par exemple : AUCHAN, BOULANGER) et de ressortir des informations liées aux quantity invoiced pour ces deux customers.
La requête fonctionne bien sous SQL Server mais pas sous Oracle. Est-ce que quelqu'un pourrait m'aider ?!
Ci-dessous, vous trouverez la requête sous SQL Server qui fonctionne suivie de la requête sous Oracle qui elle ne fonctionne pas avec plus de détails.
-----------------------------------------------------------------------
Voici ma requête sous SQL Server :
SELECT
F_INVOICE_VW_COHERENT.QUANTITY_INVOICED AS [Quantity Invoiced],
D_TIME_VW.FULL_DATE AS Date,
D_CUSTOMER_VW.CUSTOMER_GROUP AS Customer
FROM
F_INVOICE_VW_COHERENT INNER JOIN D_TIME_VW ON F_INVOICE_VW_COHERENT.DATE_KEY = D_TIME_VW.DATE_KEY INNER JOIN D_CUSTOMER_VW ON F_INVOICE_VW_COHERENT.CUSTOMER_KEY = D_CUSTOMER_VW.CUSTOMER_KEY
WHERE
(D_CUSTOMER_VW.CUSTOMER_GROUP IN (@Customer))
AND
(D_TIME_VW.FULL_DATE >= @StartDate)
AND
(D_TIME_VW.FULL_DATE < @EndDate + 1)
Le @ signifie que c'est un paramètre entré ou selectionné par l'utilisateur. Pour la ligne rouge, l'utilisateur peut sélectionner dans une liste déroulante à check box, plusieurs Customers. Cette liste déroulante se base sur une requête écrite (select distinct CUSTOMER_GROUP from dbo.D_CUSTOMER_VW order by CUSTOMER_GROUP asc) mais elle se forme au niveau applicatif sous visual studio 2005.
------------------------------------------------------------
Voici maintenant ma requête sous ORACLE :
La deuxième requête est un test effectué en se concentrant sur la partie customer seulement (deux customers group sont par exemple AUCHAN, BOULANGER).
Un choix multiple est également donné aux utilsateurs par le biais d'une liste déroulante à CheckBox (applicatif) basée sur une requête :
-- REQUETE COMPLETE // BUG SUR LA CLAUSE WHERE LIEE AUX CUSTOMERS
SELECT
D_TIME_VWO.FULL_DATE,
D_CUSTOMER_VWO.CUSTOMER_GROUP,
F_INVOICE_VWO.QUANTITY_INVOICED
FROM
F_INVOICE_VWO,
D_CUSTOMER_VWO,
D_TIME_VWO
WHERE
F_INVOICE_VWO.CUSTOMER_KEY = D_CUSTOMER_VWO.CUSTOMER_KEY
AND
F_INVOICE_VWO.DATE_KEY = D_TIME_VWO.DATE_KEY
AND
(D_TIME_VWO.FULL_DATE >= TO_DATE(TO_CHAR(:startdate, 'YYYY-DD-MM'), 'YYYY-DD-MM'))
AND
(D_TIME_VWO.FULL_DATE < TO_DATE(TO_CHAR(:enddate, 'YYYY-DD-MM'), 'YYYY-DD-MM') + 1)
AND
D_CUSTOMER_VWO.CUSTOMER_GROUP IN
(
SELECT DISTINCT CUSTOMER_GROUP
FROM D_CUSTOMER_VWO
WHERE (CUSTOMER_GROUP = :Customers)
)
ORDER BY
D_TIME_VWO.FULL_DATE,
D_CUSTOMER_VWO.CUSTOMER_GROUP
-- REQUETE TEST AVEC SEULEMENT LES CUSTOMERS
SELECT
DISTINCT CUSTOMER_GROUP
FROM
D_CUSTOMER_VWO
WHERE
CUSTOMER_GROUP IN (
SELECT DISTINCT CUSTOMER_GROUP
FROM D_CUSTOMER_VWO
WHERE CUSTOMER_GROUP = (:Customers))
Partager