AGRUPAS VARIAS LINHAS EM UMA COLUNA

MFVB 18/10/2013 11:15:43
#430147
Oi pessoal do VBMANIA!

Alguém poderia me ajudar?

Minha consulta está trazendo as informações desta forma:

COD_PED QTDE COD_PROD OF_PROD
1070 10 4260 1
1070 25 4260 2
1070 30 4260 3
1071 20 5043 1
1071 100 5043 2

Preciso agrupar assim:

1070 65 4260 1,2,3
1071 120 5043 1,2

A pesquisa faço dentro da aplicação VB6 via ADO.

como seria o select? Agradeço desde já.
OCELOT 18/10/2013 13:01:06
#430152
Você não especificou qual banco de dados está usando, sem saber isso fica difícil de dizer a melhor forma de fazer o que você precisa para a ultima coluna
MFVB 18/10/2013 13:35:37
#430153
O banco é ACCESS.

Obrigado!
MFVB 06/11/2013 11:59:45
#430793

No Access não dá para agrupar várias linhas em coluna?

RO.DRIGOSG 06/11/2013 17:57:14
#430818
Boa tarde MFVB,

Daria para fazer em uma consulta simples (em SQL SERVER) se você não utilizasse a última coluna. Pois na ultima linha você esta concatenando um valor e não fazendo uma operação. Se tem algum outro jeito eu não sei.....rs. Em uma consulta simples, ficaria mais ou menos assim:

SELECT
PED
,QTE
,PRD
FROM
(
SELECT
COD_PED AS PED
,SUM(QTDE) AS QTE
,COD_PROD AS PRD
FROM
PRODUTO_TESTE
GROUP BY
COD_PED
,COD_PROD
) AS TEMP



Acredito que para fazer o que você quer, seria necessária criar um cursor, que dai seria um pouco mais complicado:



CREATE TABLE PRODUTO_TESTE_TEMP
(
COD_PED INT
,QTDE INT
,COD_PROD INT
,OF_PROD VARCHAR(10)
)


DECLARE
@PED INT
,@QTE INT
,@PRD INT
,@OFP INT
,@PED_ANT INT
,@COD_PROD_ANT INT
,@CONC_OFP VARCHAR(10)
,@SUM_QTE INT

SET @PED_ANT = 0
SET @COD_PROD_ANT = 0
SET @SUM_QTE = 0
SET @CONC_OFP = [ô][ô]

DECLARE cur_Processo CURSOR FOR

SELECT
COD_PED AS PED
,QTDE AS QTE
,COD_PROD AS PRD
,OF_PROD AS OFP
FROM
PRODUTO_TESTE
ORDER BY
COD_PED

OPEN cur_Processo

FETCH NEXT FROM cur_Processo
INTO @PED, @QTE, @PRD, @OFP

WHILE @@FETCH_STATUS = 0
BEGIN

IF(@PED_ANT = 0)
BEGIN
SET @SUM_QTE = @QTE
SET @CONC_OFP = CONVERT(VARCHAR(10),@OFP)
END
ELSE
BEGIN
IF (@PED_ANT = @PED)
BEGIN
SET @SUM_QTE = @SUM_QTE + @QTE
SET @CONC_OFP = @CONC_OFP + [ô], [ô] + CONVERT(VARCHAR(10),@OFP)
END
ELSE
BEGIN

INSERT INTO PRODUTO_TESTE_TEMP VALUES
(@PED_ANT,@SUM_QTE,@COD_PROD_ANT,@CONC_OFP)

SET @SUM_QTE = @QTE
SET @CONC_OFP = CONVERT(VARCHAR(10),@OFP)

---DELETE PRODUTO_TESTE_TEMP
END

END

SET @PED_ANT = @PED
SET @COD_PROD_ANT = @PRD

FETCH NEXT FROM cur_Processo INTO @PED, @QTE, @PRD, @OFP


END
CLOSE cur_Processo;
DEALLOCATE cur_Processo;

INSERT INTO PRODUTO_TESTE_TEMP VALUES
(@PED,@SUM_QTE,@PRD,@CONC_OFP)

SELECT * FROM PRODUTO_TESTE_TEMP


Faça seu login para responder