AGRUPAS VARIAS LINHAS EM UMA COLUNA
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á.
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á.
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
O banco é ACCESS.
Obrigado!
Obrigado!
No Access não dá para agrupar várias linhas em coluna?
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:
Acredito que para fazer o que você quer, seria necessária criar um cursor, que dai seria um pouco mais complicado:
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