Я хранимой процедуры проблемы, перечисленные здесь ::хранимая процедура: Значения в трех столбцах одинаковы, даже если дата заказа отличается
Например Клиент А имеет:. я) пять заказов в первые 30 дней .., б) пять заказов в первые 60 дней, III) пять заказов в первые 90 дней
Так что результат должен быть:
A.) First 30 Days: Five orders
B.) First 60 Days: Five + Five = 10 Orders
C.) First 90 Days: Five + Five + Five = 15 Orders
Однако моя хранимая процедура показывает '15 заказовза все 30,60 и 90 дней. Не могли бы вы помочь мне, чтобы моя Хранимая процедура показывала «5 заказов» за 30 дней, «10 заказов за 60 дней» и «15 заказов» за 90 дней. [НИЖЕ ЧАСТЬ КОДА] Благодарим вас за помощь.
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
Не могли бы вы разместить какой-либо код и возможную информацию о структуре таблицы? – Suirtimed
Я разместил часть кода выше. Спасибо. – user555190