Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2000 Forums
 SQL Server Development (2000)
 A little bad select!!!

Author  Topic 

Dayvson
Starting Member

14 Posts

Posted - 2003-01-08 : 15:55:00
Well, I am back! This time, the problem is that I want to get the "MAX" from quantity where "quantity" is a column. Then, take a look about the following code:

SELECT
TS.STORE_NAME AS SUPPORT_STORE,
TP.DESCRIPTION_PRODUCT AS PRODUCT,
SUM(TIPR.QUANTITY) AS QUANTITY
-- SUM(TIPR.PRICE * TIPR.QUANTITY) AS TOTAL <<< this line only comments!!!
FROM
TAB_P_RANGE as TPR INNER JOIN TAB_IT_P_R as TIPR
ON
TPR.CODE_P_A = TIPR.CODE_P_A INNER JOIN TAB_PRODUCT AS TP
ON
TP.CODE_PRODUCT = TIPR.CODE_PRODUCT INNER JOIN TAB_STORE AS TS
ON
TPR.CODE_SUPPORT_NAME = TS.CODE_STORE
WHERE TPR.DATE_P >= '2003/01/02'
AND TPR.DATE_P <= '2003/01/07' AND TP.DESCRIPTION_PRODUCT = 'COFFEE'
GROUP BY TS.STORE_NAME,TP.DESCRIPTION_PRODUCT

This SELECT above brings me the following results:
STORE_NAME PRODUCT QUANTITY
MC001 COFFEE 146
MC007 COFFEE 30

Then, I`d like to bring the MAX of QUANTITY, because I only want to retrieve the store consumes more product. Could someone help me? I hope so.
If I put MAX replacing the SUM, it doesn`t work... Inside this column there are many records , then, I have to plus it before to.

rrb
SQLTeam Poet Laureate

1479 Posts

Posted - 2003-01-08 : 18:41:27
Don't understand this sentence. could you try again?
quote:

Inside this column there are many records , then, I have to plus it before to.


PS - could you post some DDL (example data and table definitions?)

Ta

--
I hope that when I die someone will say of me "That guy sure owed me a lot of money"
Go to Top of Page

nr
SQLTeam MVY

12543 Posts

Posted - 2003-01-08 : 22:58:30
You only want the entry with max quantity?

SELECT top 1
TS.STORE_NAME AS SUPPORT_STORE,
TP.DESCRIPTION_PRODUCT AS PRODUCT,
SUM(TIPR.QUANTITY) AS QUANTITY
-- SUM(TIPR.PRICE * TIPR.QUANTITY) AS TOTAL <<< this line only comments!!!
FROM
TAB_P_RANGE as TPR INNER JOIN TAB_IT_P_R as TIPR
ON
TPR.CODE_P_A = TIPR.CODE_P_A INNER JOIN TAB_PRODUCT AS TP
ON
TP.CODE_PRODUCT = TIPR.CODE_PRODUCT INNER JOIN TAB_STORE AS TS
ON
TPR.CODE_SUPPORT_NAME = TS.CODE_STORE
WHERE TPR.DATE_P >= '2003/01/02'
AND TPR.DATE_P <= '2003/01/07' AND TP.DESCRIPTION_PRODUCT = 'COFFEE'
GROUP BY TS.STORE_NAME,TP.DESCRIPTION_PRODUCT
order by QUANTITY desc

==========================================
Cursors are useful if you don't know sql.
DTS can be used in a similar way.
Beer is not cold and it isn't fizzy.
Go to Top of Page

ValterBorges
Master Smack Fu Yak Hacker

1429 Posts

Posted - 2003-01-09 : 03:19:13
CREATE TABLE #TAB_AREA
(
CODIGO_AREA INT, --AreaID
CODIGO_LOJA_APOIO INT --Main/Supplier Store ID
)

CREATE TABLE #TAB_LOJA
(
CODIGO_LOJA INT, --StoreID
CODIGO_AREA INT, -- AreaID
NOME_LOJA NVARCHAR(50), --StoreName
ENDERECO_LOJA NVARCHAR(50), -- StoreAddress
LOJA_APOIO BIT -- is it a Main/Supplier Store
)

CREATE TABLE #TAB_PRODUTO
(
CODIGO_PRODUTO INT, --ProductID
DESCRICAO_PRODUTO NVARCHAR(50), --ProductDescription
PRECO_PRODUTO MONEY, --ProductPrice
CODIGO_TIPO_VOLUME INT, --TypeOfVolumeID?? Maybe this mean per ex: 10.00 per gram
QTDE_MIM_PRODUTO INT --MIN QUANTITY OF PRODUCT
)

CREATE TABLE #TAB_PEDIDO_AREA --Area Requests
(
CODIGO_PEDIDO_A INT, --RequestID
CODIGO_LOJA_APOIO INT, --StoreID
CODIGO_FUNCIONARIO INT, --EmployeeID
DATA_PEDIDO DATETIME, --RequestDate
DATA_ENTREGA DATETIME --DeliveredDate
)

CREATE TABLE #TAB_IT_PEDIDO_A --RequestItems
(
CODIGO_IT_PEDIDO_A INT, --RequestItemsID
CODIGO_PEDIDO_A INT, --RequestID
CODIGO_PRODUTO INT, --ProductID
QUANTIDATE INT, --Quantity
PRECO money --Price
)

--Create some areas
INSERT INTO #TAB_AREA (CODIGO_AREA, CODIGO_LOJA_APOIO) VALUES (1,1)
INSERT INTO #TAB_AREA (CODIGO_AREA, CODIGO_LOJA_APOIO) VALUES (2,2)

-- Create three stores stores 2 Main stores and 1 Sub store in areas 1 and 2
INSERT INTO #TAB_LOJA (CODIGO_LOJA, CODIGO_AREA, NOME_LOJA, ENDERECO_LOJA, LOJA_APOIO)
VALUES (1,1,'Store1','Address of Store1', 1)
INSERT INTO #TAB_LOJA (CODIGO_LOJA, CODIGO_AREA, NOME_LOJA, ENDERECO_LOJA, LOJA_APOIO)
VALUES (2,2,'Store2', 'Address of Store2',1)
INSERT INTO #TAB_LOJA (CODIGO_LOJA, CODIGO_AREA, NOME_LOJA, ENDERECO_LOJA, LOJA_APOIO)
VALUES (3,2,'Store3', 'Address of Store3',0)

--Create Two Products Coffee and Banannas
INSERT INTO #TAB_PRODUTO (CODIGO_PRODUTO, DESCRICAO_PRODUTO, PRECO_PRODUTO, CODIGO_TIPO_VOLUME, QTDE_MIM_PRODUTO)
VALUES (1,'Coffee', 10.00, 1, 10)
INSERT INTO #TAB_PRODUTO (CODIGO_PRODUTO, DESCRICAO_PRODUTO, PRECO_PRODUTO, CODIGO_TIPO_VOLUME, QTDE_MIM_PRODUTO)
VALUES (2,'Banannas',5.00, 2, 10)

--Create 6 Requests
INSERT INTO #TAB_PEDIDO_AREA (CODIGO_PEDIDO_A,CODIGO_LOJA_APOIO,CODIGO_FUNCIONARIO,DATA_PEDIDO, DATA_ENTREGA)
VALUES (1,1,1,'2003/01/08','2003/01/09')
INSERT INTO #TAB_PEDIDO_AREA (CODIGO_PEDIDO_A,CODIGO_LOJA_APOIO,CODIGO_FUNCIONARIO,DATA_PEDIDO, DATA_ENTREGA)
VALUES (2,1,1,'2003/01/09','2003/01/10')
INSERT INTO #TAB_PEDIDO_AREA (CODIGO_PEDIDO_A,CODIGO_LOJA_APOIO,CODIGO_FUNCIONARIO,DATA_PEDIDO, DATA_ENTREGA)
VALUES (3,2,2,'2003/01/08','2003/01/09')
INSERT INTO #TAB_PEDIDO_AREA (CODIGO_PEDIDO_A,CODIGO_LOJA_APOIO,CODIGO_FUNCIONARIO,DATA_PEDIDO, DATA_ENTREGA)
VALUES (4,2,2,'2003/01/09','2003/01/10')
INSERT INTO #TAB_PEDIDO_AREA (CODIGO_PEDIDO_A,CODIGO_LOJA_APOIO,CODIGO_FUNCIONARIO,DATA_PEDIDO, DATA_ENTREGA)
VALUES (5,3,3,'2003/01/08','2003/01/09')
INSERT INTO #TAB_PEDIDO_AREA (CODIGO_PEDIDO_A,CODIGO_LOJA_APOIO,CODIGO_FUNCIONARIO,DATA_PEDIDO, DATA_ENTREGA)
VALUES (6,3,3,'2003/01/09','2003/01/10')

--Create 12 RequestItems
--First Request Made by store 1 for 10 qt coffee, 10 qt bananas
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (1,1,1,10,10)
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (2,1,2,10,5)

--Second Request Made by store 1 for 20 qt coffee, 20 qt bananas
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (3,2,1,20,10)
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (4,2,2,20,5)

--Third Request Made by store 2 for 10 qt coffee, 7 qt bananas
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (5,3,1,10,10)
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (6,3,2,7,5)

--Fourth Request Made by store 2 for 1 qt coffee, 7 qt bananas
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (7,4,1,1,10)
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (8,4,2,7,5)

--Fifth Request Made by store 3 for 10 qt coffee, 7 qt bananas
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (9,5,1,10,10)
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (10,5,2,7,5)

--Sixth Request Made by store 3 for 20 qt coffee, 1 qt bananas
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (11,6,1,20,10)
INSERT INTO #TAB_IT_PEDIDO_A (CODIGO_IT_PEDIDO_A,CODIGO_PEDIDO_A,CODIGO_PRODUTO,QUANTIDATE,PRECO)
VALUES (12,6,2,1,5)

SELECT * FROM #TAB_AREA
SELECT * FROM #TAB_LOJA
SELECT * FROM #TAB_PRODUTO
SELECT * FROM #TAB_PEDIDO_AREA
SELECT * FROM #TAB_IT_PEDIDO_A

--This gets you product quantity requested by store
SELECT A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO, SUM(B.QUANTIDATE) AS QUANTIDATE
FROM
#TAB_PEDIDO_AREA A
LEFT JOIN #TAB_IT_PEDIDO_A B ON A.CODIGO_PEDIDO_A = B.CODIGO_PEDIDO_A
LEFT JOIN #TAB_PRODUTO C ON B.CODIGO_PRODUTO = C.CODIGO_PRODUTO
WHERE
A.DATA_PEDIDO >= '2003/01/02' AND
A.DATA_PEDIDO <= '2003/01/12' AND
C.DESCRICAO_PRODUTO = 'Coffee'
GROUP BY A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO

--This gets you the MAX QUANTITY for the product
SELECT AA.CODIGO_PRODUTO, MAX(AA.QUANTIDATE) MaxQUANTIDATE
FROM
(
SELECT A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO, SUM(B.QUANTIDATE) AS QUANTIDATE
FROM
#TAB_PEDIDO_AREA A
LEFT JOIN #TAB_IT_PEDIDO_A B ON A.CODIGO_PEDIDO_A = B.CODIGO_PEDIDO_A
LEFT JOIN #TAB_PRODUTO C ON B.CODIGO_PRODUTO = C.CODIGO_PRODUTO
WHERE
A.DATA_PEDIDO >= '2003/01/02' AND
A.DATA_PEDIDO <= '2003/01/12' AND
C.DESCRICAO_PRODUTO = 'Coffee'
GROUP BY A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO
) AA
GROUP BY AA.CODIGO_PRODUTO

--Now combine the two ideas and you get.
SELECT AAA.CODIGO_LOJA_APOIO, CCC.NOME_LOJA, AAA.CODIGO_PRODUTO, DDD.DESCRICAO_PRODUTO, AAA.QUANTIDATE
FROM
(
SELECT A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO, SUM(B.QUANTIDATE) AS QUANTIDATE
FROM
#TAB_PEDIDO_AREA A
LEFT JOIN #TAB_IT_PEDIDO_A B ON A.CODIGO_PEDIDO_A = B.CODIGO_PEDIDO_A
LEFT JOIN #TAB_PRODUTO C ON B.CODIGO_PRODUTO = C.CODIGO_PRODUTO
WHERE
A.DATA_PEDIDO >= '2003/01/02' AND
A.DATA_PEDIDO <= '2003/01/12' AND
C.DESCRICAO_PRODUTO = 'Coffee'
GROUP BY A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO
) AAA INNER JOIN
(
SELECT AA.CODIGO_PRODUTO, MAX(AA.QUANTIDATE) AS MaxQUANTIDATE
FROM
(
SELECT A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO, SUM(B.QUANTIDATE) AS QUANTIDATE
FROM
#TAB_PEDIDO_AREA A
LEFT JOIN #TAB_IT_PEDIDO_A B ON A.CODIGO_PEDIDO_A = B.CODIGO_PEDIDO_A
LEFT JOIN #TAB_PRODUTO C ON B.CODIGO_PRODUTO = C.CODIGO_PRODUTO
WHERE
A.DATA_PEDIDO >= '2003/01/02' AND
A.DATA_PEDIDO <= '2003/01/12' AND
C.DESCRICAO_PRODUTO = 'Coffee'
GROUP BY A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO
) AA
GROUP BY AA.CODIGO_PRODUTO
) BBB ON AAA.CODIGO_PRODUTO = BBB.CODIGO_PRODUTO AND AAA.QUANTIDATE = BBB.MaxQUANTIDATE
LEFT JOIN #TAB_LOJA CCC ON AAA.CODIGO_LOJA_APOIO = CCC.CODIGO_LOJA
LEFT JOIN #TAB_PRODUTO DDD ON AAA.CODIGO_PRODUTO = DDD.CODIGO_PRODUTO


DROP TABLE #TAB_AREA
DROP TABLE #TAB_LOJA
DROP TABLE #TAB_PRODUTO
DROP TABLE #TAB_PEDIDO_AREA
DROP TABLE #TAB_IT_PEDIDO_A

I'm sure someone might be able to optimize that but i'm going to
zzzzzzz....

Edited by - ValterBorges on 01/09/2003 03:20:15
Go to Top of Page

Dayvson
Starting Member

14 Posts

Posted - 2003-01-09 : 08:49:38
Dears friends....I thank U so much...but it didn`t work out yet...I think the post of Valter is almost there, But it`s so hard to understand and I didn`t get it optimized...But I am working on this.
Dear "NR" , ur solution works...but there`s a problem....In fact , a big problem, Although, Valter realized it....the problem is the following: The way you did show it, it`s almost right....But I ask you : "if instead of only one store consumes more the defined product, there are 2 stores??? Could it retrieves me the 2 stores? showing me that these two stores did consume more...I think not...The way is to optimize what is done by Valter...but I don`t know how to...lol...Could some one help me please??I hope so...
Well, Valter sorry me...but I was so tired too...Then, I sleeped without realize it..I ask for you apologizes!Sorry me...
For while, that`s all folks!

Go to Top of Page

Dayvson
Starting Member

14 Posts

Posted - 2003-01-09 : 09:06:52
YYYuuupppiiieeeeeee......I am so happyyyy!!! Thanks all has contributed about it...I got it, or better... Valter got it. Thanks, thank, very very very much!!!!
Sincerily, I don`t know how to thank all of you!!! I hope someday do the same thing!!
See ya people!!

Go to Top of Page
   

- Advertisement -