Fórum Firebird retornar dados em uma unica coluna #502777
28/11/2014
0
/* Table: ESTOQUEPROD, Owner: SYSDBA */
CREATE TABLE "ESTOQUEPROD"
(
"CODIGO" INTEGER NOT NULL,
"CODFORNPENULT" INTEGER,
"CODFORNENTRADA" INTEGER,
"ID_LOJA" INTEGER NOT NULL,
"QUANTIDADE" DOUBLE PRECISION NOT NULL,
"QUANTIDADEDEP" DOUBLE PRECISION NOT NULL,
"QUANTPENULT" DOUBLE PRECISION,
"VALOR" DOUBLE PRECISION,
"VALORPENULT" DOUBLE PRECISION,
"ULTIMAVENDA" TIMESTAMP,
"ULTIMAENTRADA" TIMESTAMP,
"DATAPENULTENTRADA" TIMESTAMP,
"ALTERACAO" TIMESTAMP,
"QUANTENTRADA" DOUBLE PRECISION,
"QTGRADE" VARCHAR(250),
"E_PRECO_COMPRA" DOUBLE PRECISION,
"E_PRECO_VENDA" DOUBLE PRECISION,
"E_MARGEM" NUMERIC(15,2),
"E_ESTMINIMO" INTEGER,
"E_ESTMAXIMO" INTEGER,
CONSTRAINT "PK_ESTOQUEPROD" PRIMARY KEY ("CODIGO", "ID_LOJA")
);
CREATE TABLE "PRODUTOS" ( "CODIGO" INTEGER NOT NULL, "CODSETOR" INTEGER, "CODFORN" INTEGER, "CODLAB" INTEGER, "CODIGO_BARRAS" VARCHAR(14), "PRODUTO" VARCHAR(50) NOT NULL, "ICMS" VARCHAR(6), "PRECO_COMPRA" DOUBLE PRECISION, "PRECO_VENDA" DOUBLE PRECISION, "MAXIMO" DOUBLE PRECISION, "MINIMO" DOUBLE PRECISION, "UNIDADE" VARCHAR(4), "ESPECIFICACAO" VARCHAR(45), "IMAGEM" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
a tabela produtos carregar o cadastro do produto a tabela estoque
carrega os estoques por loja, gostaria retornar os dados em colunas.
Ex:
Produto Loja 1 Loja2
teste de loja 2 3
Obrigado a todos que poderem dar uma força.
Emerson Santos
Curtir tópico
+ 0Post mais votado
30/11/2014
SELECT p.produto,
CASE
WHEN v.id_loja = 1 THEN
SUM(v.total)
END as loja_1,
CASE
WHEN v.id_loja = 2 THEN
SUM(v.total)
END as loja_2
FROM vendas v
LEFT OUTER JOIN produtos p ON (v.codigo = p.codigo)
WHERE v.id_loja in (1,2)
GROUP BY p.produto,v.id_loja
Marisiana Battistella
Gostei + 1
Mais Posts
28/11/2014
Ronaldo Lanhellas
Gostei + 0
28/11/2014
Ronaldo Lanhellas
Gostei + 0
28/11/2014
Ronaldo Lanhellas
Gostei + 0
28/11/2014
Ronaldo Lanhellas
Gostei + 0
28/11/2014
Emerson Santos
SELECT P.CODIGO, P.PRODUTO, E.QUANTIDADE FROM PRODUTOS P LEFT OUTER JOIN ESTOQUEPROD E ON E.CODIGO =P.CODIGO WHERE P.CODIGO=46463 GROUP BY P.CODIGO,P.PRODUTO,E.QUANTIDADE
mesmo utilizando o seguinte codigo , ele mostra o mesmo registro varias vezes
de acordo com a quantidade de lojas que tem estoque na tabela estoqueprod
eu queri agrupalos
produto quantidade1 quantidade2 quantidade3
caixa 2 3 5
Gostei + 0
29/11/2014
Marisiana Battistella
No Oracle pode-se fazer isso utilizando o PIVOT, mas eu acho q não tem esse recurso no firebird...
Gostei + 0
29/11/2014
Randrade
SELECT P.CODIGO, P.PRODUTO, E.QUANTIDADE FROM PRODUTOS P LEFT OUTER JOIN ESTOQUEPROD E ON E.CODIGO =P.CODIGO WHERE P.CODIGO=46463 GROUP BY P.CODIGO,P.PRODUTO,E.QUANTIDADE
mesmo utilizando o seguinte codigo , ele mostra o mesmo registro varias vezes
de acordo com a quantidade de lojas que tem estoque na tabela estoqueprod
eu queri agrupalos
produto quantidade1 quantidade2 quantidade3
caixa 2 3 5
Não entendi muito bem sua dúvida. Mas se está retornando o mesmo dado várias vezes, já tentou usar o "DISTINCT". Basta adicionar a palavra "DISTINCT" após o SELECT.
Se não for isso, peço que explique melhor seu problema para que possa ajudar melhor.
Gostei + 0
29/11/2014
Marisiana Battistella
PRODUTO LOJA_1 LOJA_2 LOJA_3 prod1 1 3 4 prod2 2 1 2 prod3 2 4 4
Gostei + 0
29/11/2014
Emerson Santos
ate o mesmo o access, no firebird nao tem , so tem um recurso chamado LIST
mais ainda sim nao é o que preciso, pensei em alguem que tivesse conhecimento em
store procedure ja vi isso utilizando esse recurso.
Gostei + 0
29/11/2014
Marisiana Battistella
SELECT res.nmproduto,
SUM(res.loja_1) as loja_1,
SUM(res.loja_2) as loja_2
FROM (
SELECT p.nmproduto,
CASE
WHEN v.idloja = 1 THEN
SUM(v.vlrtotal)
END as loja_1,
CASE
WHEN v.idloja = 2 THEN
SUM(v.totalitem)
END as loja_2
FROM venda v
JOIN produto p
ON v.idproduto = p.idproduto
WHERE v.idloja in (1,2)
GROUP BY p.nmproduto,
v.idloja) res
GROUP BY res.nmproduto
ORDER BY res.nmprodutoGostei + 0
29/11/2014
Marisiana Battistella
Basta saber se pode ser aplicado...
Gostei + 0
29/11/2014
Emerson Santos
sql comum ou voce colocou em uma store procedures ?
Gostei + 0
29/11/2014
Emerson Santos
mais da esse erro
ISC ERROR CODE:335544569
ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 5, column 5
SELECT
SELECT res.produto,
SUM(res.loja_1) as loja_1,
SUM(res.loja_2) as loja_2
FROM (
SELECT p.produto,
CASE
WHEN v.id_loja = 1 THEN
SUM(v.total)
END as loja_1,
CASE
WHEN v.id_loja = 2 THEN
SUM(v.total)
END as loja_2
FROM vendas v
JOIN produtos p ON v.codigo = p.codigo
WHERE v.id_loja in (1,2)
GROUP BY p.produto,v.id_loja) res
GROUP BY res.produto
ORDER BY res.produto
Gostei + 0
29/11/2014
Marisiana Battistella
Executa só o select do subselect para ver se dá o mesmo erro?
Gostei + 0
29/11/2014
Emerson Santos
da esse erro
ISC ERROR CODE:335544569
ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 13, column 33
)
SELECT p.produto,
CASE
WHEN v.id_loja = 1 THEN
SUM(v.total)
END as loja_1,
CASE
WHEN v.id_loja = 2 THEN
SUM(v.total)
END as loja_2
FROM vendas v
JOIN produtos p ON v.codigo = p.codigo
WHERE v.id_loja in (1,2)
GROUP BY p.produto,v.id_loja) res
GROUP BY res.produto
ORDER BY res.produto
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)