Ich habe eine gespeicherte Prozedur Problem hier aufgeführt ::Stored Procedure: Werte in den drei Spalten sind die gleichen, auch wenn die Order Date anders
Zum Beispiel Kunde A hat. i) Fünf Aufträge in ersten 30 Tagen .., ii) Fünf Aufträge in ersten 60 Tagen iii) Fünf Aufträge in ersten 90 Tagen
So soll das Ergebnis sein:
A.) First 30 Days: Five orders
B.) First 60 Days: Five + Five = 10 Orders
C.) First 90 Days: Five + Five + Five = 15 Orders
jedoch meine gespeicherten Prozedur zeigt '15 Orders' für alle 30,60 und 90 Tage. Könnten Sie mir bitte helfen, so dass meine Stored Procedure "5 Bestellungen" in 30 Tagen, "10 Bestellungen in 60 Tagen" und "15 Bestellungen" in 90 Tagen anzeigt. [UNTEN IST DER TEIL DES CODES] Vielen Dank für Ihre Hilfe.
IF (@CUSTOMERID IS NOT NULL)
BEGIN
CREATE TABLE #TEMP_D
(
CUSTOMERID VARCHAR(20),
ORDERID INT,
PRODUCTID INT,
QUANTITY VARCHAR(20)
)
INSERT INTO #TEMP_F(CUSTOMERID,ORDERID,PRODUCTID,QUANTITY)
(CUSTOMERID VARCHAR(20),ORDERID INT,PRODUCTID INT,QUANTITY VARCHAR(20))
INSERT INTO #TEMP_D(CUSTOMERID,ORDERID,PRODUCTID,QUANTITY)
SELECT C.CUSTOMERID, COUNT(O.ORDERID),COUNT(OD.PRODUCTID),
RANKING = CASE
WHEN SUM(OD.QUANTITY*OD.UNITPRICE)>250 THEN 'REGULAR'
WHEN SUM(OD.QUANTITY*OD.UNITPRICE)< 250 THEN 'MODERATE'
END
FROM CUSTOMERS C
INNER JOIN
ORDERS O ON C.CUSTOMERID=O.CUSTOMERID
INNER JOIN
[ORDER DETAILS] OD ON O.ORDERID=OD.ORDERID
WHERE (C.CUSTOMERID = @CUSTOMERID)
GROUP BY C.CUSTOMERID
CREATE TABLE #TEMP_E
(
CUSTOMERID VARCHAR(20),
ORDERID INT,
PRODUCTID INT,
QUANTITY VARCHAR(20)
)
INSERT INTO #TEMP_F(CUSTOMERID,ORDERID,PRODUCTID,QUANTITY)
(CUSTOMERID VARCHAR(20),ORDERID INT,PRODUCTID INT,QUANTITY VARCHAR(20))
INSERT INTO #TEMP_D(CUSTOMERID,ORDERID,PRODUCTID,QUANTITY)
SELECT C.CUSTOMERID, COUNT(O.ORDERID),COUNT(OD.PRODUCTID),
RANKING = CASE
WHEN SUM(OD.QUANTITY*OD.UNITPRICE)>250 THEN 'REGULAR'
WHEN SUM(OD.QUANTITY*OD.UNITPRICE)< 250 THEN 'MODERATE'
END
FROM CUSTOMERS C
INNER JOIN
ORDERS O ON C.CUSTOMERID=O.CUSTOMERID
INNER JOIN
[ORDER DETAILS] OD ON O.ORDERID=OD.ORDERID
WHERE (C.CUSTOMERID = @CUSTOMERID)
GROUP BY C.CUSTOMERID
CREATE TABLE #TEMP_F
(
CUSTOMERID VARCHAR(20),
ORDERID INT,
PRODUCTID INT,
QUANTITY VARCHAR(20)
)
INSERT INTO #TEMP_F(CUSTOMERID,ORDERID,PRODUCTID,QUANTITY)
(CUSTOMERID VARCHAR(20),ORDERID INT,PRODUCTID INT,QUANTITY VARCHAR(20))
INSERT INTO #TEMP_D(CUSTOMERID,ORDERID,PRODUCTID,QUANTITY)
SELECT C.CUSTOMERID, COUNT(O.ORDERID),COUNT(OD.PRODUCTID),
RANKING = CASE
WHEN SUM(OD.QUANTITY*OD.UNITPRICE)>250 THEN 'REGULAR'
WHEN SUM(OD.QUANTITY*OD.UNITPRICE)< 250 THEN 'MODERATE'
END
FROM CUSTOMERS C
INNER JOIN
ORDERS O ON C.CUSTOMERID=O.CUSTOMERID
INNER JOIN
[ORDER DETAILS] OD ON O.ORDERID=OD.ORDERID
WHERE (C.CUSTOMERID = @CUSTOMERID)
GROUP BY C.CUSTOMERID
SELECT D.CUSTOMERID, D.ORDERID AS 'ORDERS 30 DAYD',D.PRODUCTID AS 'PRODUCTS 30 DAYS',D.QUANTITY, E.CUSTOMERID, E.ORDERID AS 'ORDERS 60
DAYS',E.PRODUCTID AS 'PRODUCTS 60 DAYS',E.QUANTITY, F.CUSTOMERID, F.ORDERID AS 'ORDERS 90 DAYD',F.PRODUCTID AS 'PRODUCTS 90 DAYS',F.QUANTITY
FROM #TEMP_D D
INNER JOIN #TEMP_E E ON D.CUSTOMERID=E.CUSTOMERID
INNER JOIN #TEMP_F F ON E.CUSTOMERID = F.CUSTOMERID
END
Würden Sie etwas Code und mögliche Informationen über die Tabellenstruktur posten? – Suirtimed
Ich habe einen Teil des obigen Codes veröffentlicht. Danke. – user555190