| 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 TIPRON TPR.CODE_P_A = TIPR.CODE_P_A INNER JOIN TAB_PRODUCT AS TPON TP.CODE_PRODUCT = TIPR.CODE_PRODUCT INNER JOIN TAB_STORE AS TSON 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_PRODUCTThis SELECT above brings me the following results:STORE_NAME PRODUCT QUANTITYMC001 COFFEE 146MC007 COFFEE 30Then, 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" |
 |
|
|
nr
SQLTeam MVY
12543 Posts |
Posted - 2003-01-08 : 22:58:30
|
| You only want the entry with max quantity?SELECT top 1TS.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. |
 |
|
|
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, --StoreIDCODIGO_AREA INT, -- AreaIDNOME_LOJA NVARCHAR(50), --StoreNameENDERECO_LOJA NVARCHAR(50), -- StoreAddressLOJA_APOIO BIT -- is it a Main/Supplier Store)CREATE TABLE #TAB_PRODUTO(CODIGO_PRODUTO INT, --ProductIDDESCRICAO_PRODUTO NVARCHAR(50), --ProductDescriptionPRECO_PRODUTO MONEY, --ProductPriceCODIGO_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, --EmployeeIDDATA_PEDIDO DATETIME, --RequestDateDATA_ENTREGA DATETIME --DeliveredDate)CREATE TABLE #TAB_IT_PEDIDO_A --RequestItems(CODIGO_IT_PEDIDO_A INT, --RequestItemsIDCODIGO_PEDIDO_A INT, --RequestIDCODIGO_PRODUTO INT, --ProductID QUANTIDATE INT, --QuantityPRECO money --Price)--Create some areasINSERT 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 2INSERT 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 BanannasINSERT 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 RequestsINSERT 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 bananasINSERT 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 bananasINSERT 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 bananasINSERT 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 bananasINSERT 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 bananasINSERT 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 bananasINSERT 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_AREASELECT * FROM #TAB_LOJASELECT * FROM #TAB_PRODUTOSELECT * FROM #TAB_PEDIDO_AREASELECT * FROM #TAB_IT_PEDIDO_A --This gets you product quantity requested by storeSELECT A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO, SUM(B.QUANTIDATE) AS QUANTIDATEFROM #TAB_PEDIDO_AREA A LEFT JOIN #TAB_IT_PEDIDO_A B ON A.CODIGO_PEDIDO_A = B.CODIGO_PEDIDO_ALEFT JOIN #TAB_PRODUTO C ON B.CODIGO_PRODUTO = C.CODIGO_PRODUTOWHERE 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 productSELECT AA.CODIGO_PRODUTO, MAX(AA.QUANTIDATE) MaxQUANTIDATEFROM(SELECT A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO, SUM(B.QUANTIDATE) AS QUANTIDATEFROM #TAB_PEDIDO_AREA A LEFT JOIN #TAB_IT_PEDIDO_A B ON A.CODIGO_PEDIDO_A = B.CODIGO_PEDIDO_ALEFT JOIN #TAB_PRODUTO C ON B.CODIGO_PRODUTO = C.CODIGO_PRODUTOWHERE 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 ) AAGROUP 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.QUANTIDATEFROM(SELECT A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO, SUM(B.QUANTIDATE) AS QUANTIDATEFROM #TAB_PEDIDO_AREA A LEFT JOIN #TAB_IT_PEDIDO_A B ON A.CODIGO_PEDIDO_A = B.CODIGO_PEDIDO_ALEFT JOIN #TAB_PRODUTO C ON B.CODIGO_PRODUTO = C.CODIGO_PRODUTOWHERE 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 MaxQUANTIDATEFROM(SELECT A.CODIGO_LOJA_APOIO, B.CODIGO_PRODUTO, SUM(B.QUANTIDATE) AS QUANTIDATEFROM #TAB_PEDIDO_AREA A LEFT JOIN #TAB_IT_PEDIDO_A B ON A.CODIGO_PEDIDO_A = B.CODIGO_PEDIDO_ALEFT JOIN #TAB_PRODUTO C ON B.CODIGO_PRODUTO = C.CODIGO_PRODUTOWHERE 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 ) AAGROUP BY AA.CODIGO_PRODUTO) BBB ON AAA.CODIGO_PRODUTO = BBB.CODIGO_PRODUTO AND AAA.QUANTIDATE = BBB.MaxQUANTIDATELEFT JOIN #TAB_LOJA CCC ON AAA.CODIGO_LOJA_APOIO = CCC.CODIGO_LOJALEFT JOIN #TAB_PRODUTO DDD ON AAA.CODIGO_PRODUTO = DDD.CODIGO_PRODUTODROP TABLE #TAB_AREADROP TABLE #TAB_LOJADROP TABLE #TAB_PRODUTODROP TABLE #TAB_PEDIDO_AREADROP TABLE #TAB_IT_PEDIDO_AI'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 |
 |
|
|
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! |
 |
|
|
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!! |
 |
|
|
|
|
|