Como fazer um select apartir do resultado de outro select de modo que resulte em uma unica tabela?
26/02/2016
0
Bom dia!
Galera seguinte, preciso fazer varias consultas SELECT de modo que fique em uma tabela só, vou explicar.
Tenho a tabela de titulos baixados, onde é uma consulta facil, somente buscar se o campo de data da baixa esta preenchido,
Contudo tem titulos que são baixados com outros titulos, e fica em outra tabela, e ai esta o problema por que nessa tabela podem ter varios títulos baixando um unico titulo, e desses varios titulos podem ter sido utilizado outros varios titulos para isso. Eu pensei em fazer um sub-select select e1_num as titulo, e1_titulo2 = ( select ...) from se1.
O problema é que so pode retornar um unico registro e como existe o caso de mais de 1 titulo ser utilizado para pagar um outro titulo eu precisaria de uma outra consulta.
Galera seguinte, preciso fazer varias consultas SELECT de modo que fique em uma tabela só, vou explicar.
Tenho a tabela de titulos baixados, onde é uma consulta facil, somente buscar se o campo de data da baixa esta preenchido,
Contudo tem titulos que são baixados com outros titulos, e fica em outra tabela, e ai esta o problema por que nessa tabela podem ter varios títulos baixando um unico titulo, e desses varios titulos podem ter sido utilizado outros varios titulos para isso. Eu pensei em fazer um sub-select select e1_num as titulo, e1_titulo2 = ( select ...) from se1.
O problema é que so pode retornar um unico registro e como existe o caso de mais de 1 titulo ser utilizado para pagar um outro titulo eu precisaria de uma outra consulta.
Airton Junior
Curtir tópico
+ 0
Responder
Post mais votado
26/02/2016
---- SE PRECISAR PEGUE O MAX DE ALGUM CAMPO E FAÇA OUTRO SELECT E ASSIM POR DIANTE
--- ESPERO QUE AJUDE SE NAO CONSEGUIR MANDE OS SCRIPTS DE CRIAÇÃO
--E INSERT E MONTE UMA IMG DO RESULTADO QUE DESEJA QUE TENDO MONTAR ALGO
SELECT DISTINCT
A.BAIXA,A.CLIENTE,A.EMISSAO,A.SALDO_PENDENTE,A.TITULO,A.TITULO_BAIXADO1,
A.VALOR_TITULO,A.VENCIMENTO
FROM (
SELECT E1_NUM AS TITULO,E1_NOMCLI AS CLIENTE,
SUBSTRING(E1_EMISSAO,7,2)+'/'+SUBSTRING(E1_EMISSAO,5,2)+'/'+SUBSTRING(E1_EMISSAO,1,4) AS EMISSAO,
SUBSTRING(E1_VENCTO,7,2)+'/'+SUBSTRING(E1_VENCTO,5,2)+'/'+SUBSTRING(E1_VENCTO,1,4) AS VENCIMENTO,
SUBSTRING(E1_BAIXA,7,2)+'/'+SUBSTRING(E1_BAIXA,5,2)+'/'+SUBSTRING(E1_BAIXA,1,4) AS BAIXA,
E1_VALOR AS VALOR_TITULO,E1_SALDO AS SALDO_PENDENTE, TITULO_BAIXADO1 =
(
SELECT FI7_NUMDES FROM FI7010 WHERE
FI7010.D_E_L_E_T_ = '' AND
FI7010.FI7_NUMORI = ORIGEM.E1_NUM AND
FI7010.FI7_CLIORI = ORIGEM.E1_CLIENTE AND
FI7010.FI7_LOJORI = ORIGEM.E1_LOJA AND
FI7010.FI7_PARORI = ORIGEM.E1_PARCELA
)
FROM SE1010 AS ORIGEM WHERE
ORIGEM.D_E_L_E_T_ = '' AND
ORIGEM.E1_TIPO IN ('NF') AND
ORIGEM.E1_PREFIXO IN ('V','A') AND
ORIGEM.E1_BAIXA <> '') A
---SE PRECISAR GROUP BY CAMPOS
--- ESPERO QUE AJUDE SE NAO CONSEGUIR MANDE OS SCRIPTS DE CRIAÇÃO
--E INSERT E MONTE UMA IMG DO RESULTADO QUE DESEJA QUE TENDO MONTAR ALGO
SELECT DISTINCT
A.BAIXA,A.CLIENTE,A.EMISSAO,A.SALDO_PENDENTE,A.TITULO,A.TITULO_BAIXADO1,
A.VALOR_TITULO,A.VENCIMENTO
FROM (
SELECT E1_NUM AS TITULO,E1_NOMCLI AS CLIENTE,
SUBSTRING(E1_EMISSAO,7,2)+'/'+SUBSTRING(E1_EMISSAO,5,2)+'/'+SUBSTRING(E1_EMISSAO,1,4) AS EMISSAO,
SUBSTRING(E1_VENCTO,7,2)+'/'+SUBSTRING(E1_VENCTO,5,2)+'/'+SUBSTRING(E1_VENCTO,1,4) AS VENCIMENTO,
SUBSTRING(E1_BAIXA,7,2)+'/'+SUBSTRING(E1_BAIXA,5,2)+'/'+SUBSTRING(E1_BAIXA,1,4) AS BAIXA,
E1_VALOR AS VALOR_TITULO,E1_SALDO AS SALDO_PENDENTE, TITULO_BAIXADO1 =
(
SELECT FI7_NUMDES FROM FI7010 WHERE
FI7010.D_E_L_E_T_ = '' AND
FI7010.FI7_NUMORI = ORIGEM.E1_NUM AND
FI7010.FI7_CLIORI = ORIGEM.E1_CLIENTE AND
FI7010.FI7_LOJORI = ORIGEM.E1_LOJA AND
FI7010.FI7_PARORI = ORIGEM.E1_PARCELA
)
FROM SE1010 AS ORIGEM WHERE
ORIGEM.D_E_L_E_T_ = '' AND
ORIGEM.E1_TIPO IN ('NF') AND
ORIGEM.E1_PREFIXO IN ('V','A') AND
ORIGEM.E1_BAIXA <> '') A
---SE PRECISAR GROUP BY CAMPOS
Isaac Jose
Responder
Mais Posts
26/02/2016
Isaac Jose
bom dia amigo..
segue exemplo que tenho aqui porem tive que retirar os nomes normais de tabelas e campos..
segue
SELECT
B.*,C.TOT_AG,PERC_CART = (B.TOTLA_VLR/C.TOT)*100,D.METAGERAL
FROM
(
SELECT DISTINCT
A,b,etc,
TOTAL_QTD = SUM(camposqtd),
TOTLA_VLR = SUM(camporvlr),
MEDIA_QTD = SUM(CAST(B. AS FLOAT)+
CAST(B. AS FLOAT)+
CAST(B. AS FLOAT)+
CAST(B. AS FLOAT)+
CAST(B. AS FLOAT)+
CAST(B. AS FLOAT))
/
MONTH(B.DATA)-1 ,
MEDIA_VLR = SUM(camposvlr)/
MONTH(B.DATA) -1
FROM tb_1 A
LEFT JOIN tb_2 B
ON campos = campos
WHERE
GROUP BY
campos)B
LEFT JOIN
(SELECT camposcomparacao, ,
TOT_geral = SUM(camposvlr)
FROM tb_1
WHERE
GROUP BY
)C
ON
LEFT JOIN
(
SELECT DISTINCT
campos, SUM(A+b)
FROM
(
SELECT ,MAX()
FROM tb_1
WHERE
GROUP BY )A
LEFT JOIN
(SELECT ,MAX()
FROM tb_1
WHERE
GROUP BY )B
ON A = B
GROUP BY A)D
ON D = B
ORDER BY DESC
segue exemplo que tenho aqui porem tive que retirar os nomes normais de tabelas e campos..
segue
SELECT
B.*,C.TOT_AG,PERC_CART = (B.TOTLA_VLR/C.TOT)*100,D.METAGERAL
FROM
(
SELECT DISTINCT
A,b,etc,
TOTAL_QTD = SUM(camposqtd),
TOTLA_VLR = SUM(camporvlr),
MEDIA_QTD = SUM(CAST(B. AS FLOAT)+
CAST(B. AS FLOAT)+
CAST(B. AS FLOAT)+
CAST(B. AS FLOAT)+
CAST(B. AS FLOAT)+
CAST(B. AS FLOAT))
/
MONTH(B.DATA)-1 ,
MEDIA_VLR = SUM(camposvlr)/
MONTH(B.DATA) -1
FROM tb_1 A
LEFT JOIN tb_2 B
ON campos = campos
WHERE
GROUP BY
campos)B
LEFT JOIN
(SELECT camposcomparacao, ,
TOT_geral = SUM(camposvlr)
FROM tb_1
WHERE
GROUP BY
)C
ON
LEFT JOIN
(
SELECT DISTINCT
campos, SUM(A+b)
FROM
(
SELECT ,MAX()
FROM tb_1
WHERE
GROUP BY )A
LEFT JOIN
(SELECT ,MAX()
FROM tb_1
WHERE
GROUP BY )B
ON A = B
GROUP BY A)D
ON D = B
ORDER BY DESC
Responder
26/02/2016
Airton Junior
Vixi maria cara ta osso de entender, vou postar o que eu tentei chegar para explicar melhor o que eu quero:
SELECT E1_NUM AS TITULO,E1_NOMCLI AS CLIENTE,SUBSTRING(E1_EMISSAO,7,2)+'/'+SUBSTRING(E1_EMISSAO,5,2)+'/'+SUBSTRING(E1_EMISSAO,1,4) AS EMISSAO,
SUBSTRING(E1_VENCTO,7,2)+'/'+SUBSTRING(E1_VENCTO,5,2)+'/'+SUBSTRING(E1_VENCTO,1,4) AS VENCIMENTO,
SUBSTRING(E1_BAIXA,7,2)+'/'+SUBSTRING(E1_BAIXA,5,2)+'/'+SUBSTRING(E1_BAIXA,1,4) AS BAIXA,E1_VALOR AS VALOR_TITULO,E1_SALDO AS SALDO_PENDENTE, TITULO_BAIXADO1 =
(
SELECT FI7_NUMDES FROM FI7010 WHERE
FI7010.D_E_L_E_T_ = '' AND
FI7010.FI7_NUMORI = ORIGEM.E1_NUM AND
FI7010.FI7_CLIORI = ORIGEM.E1_CLIENTE AND
FI7010.FI7_LOJORI = ORIGEM.E1_LOJA AND
FI7010.FI7_PARORI = ORIGEM.E1_PARCELA
)
FROM SE1010 AS ORIGEM WHERE
ORIGEM.D_E_L_E_T_ = '' AND
ORIGEM.E1_TIPO IN ('NF') AND
ORIGEM.E1_PREFIXO IN ('V','A') AND
ORIGEM.E1_BAIXA <> ''
Tabela origem é a origem do titulo, com base no resultado dessa consulta preciso pesquisar dentro da tabela FI7 o titulo destino de modo a retornar todas as linhas e não somente 1 ( que no caso é o que me limita)
SELECT E1_NUM AS TITULO,E1_NOMCLI AS CLIENTE,SUBSTRING(E1_EMISSAO,7,2)+'/'+SUBSTRING(E1_EMISSAO,5,2)+'/'+SUBSTRING(E1_EMISSAO,1,4) AS EMISSAO,
SUBSTRING(E1_VENCTO,7,2)+'/'+SUBSTRING(E1_VENCTO,5,2)+'/'+SUBSTRING(E1_VENCTO,1,4) AS VENCIMENTO,
SUBSTRING(E1_BAIXA,7,2)+'/'+SUBSTRING(E1_BAIXA,5,2)+'/'+SUBSTRING(E1_BAIXA,1,4) AS BAIXA,E1_VALOR AS VALOR_TITULO,E1_SALDO AS SALDO_PENDENTE, TITULO_BAIXADO1 =
(
SELECT FI7_NUMDES FROM FI7010 WHERE
FI7010.D_E_L_E_T_ = '' AND
FI7010.FI7_NUMORI = ORIGEM.E1_NUM AND
FI7010.FI7_CLIORI = ORIGEM.E1_CLIENTE AND
FI7010.FI7_LOJORI = ORIGEM.E1_LOJA AND
FI7010.FI7_PARORI = ORIGEM.E1_PARCELA
)
FROM SE1010 AS ORIGEM WHERE
ORIGEM.D_E_L_E_T_ = '' AND
ORIGEM.E1_TIPO IN ('NF') AND
ORIGEM.E1_PREFIXO IN ('V','A') AND
ORIGEM.E1_BAIXA <> ''
Tabela origem é a origem do titulo, com base no resultado dessa consulta preciso pesquisar dentro da tabela FI7 o titulo destino de modo a retornar todas as linhas e não somente 1 ( que no caso é o que me limita)
Responder
Clique aqui para fazer login e interagir na Comunidade :)