Dois Selects

SQL Server

07/08/2007

blz galera?!
To enrolado num select aki q ta de arrebenta hein! segue:

SELECT SUM(QTDE) AS QTDE, 
SUM(QTDE*VLRUNITARIO- VLRDESCONTO) AS TOTAL, ITENSMOVPRODUTOS.ID_PRODUTOS
FROM ITENSMOVPRODUTOS INNER JOIN MOVPRODUTOS ON 
MOVPRODUTOS.ID_MOVPRODUTOS = ITENSMOVPRODUTOS.ID_MOVPRODUTOS 
WHERE ITENSMOVPRODUTOS.STATUS = 1 AND 
MOVPRODUTOS.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´ 
GROUP BY ITENSMOVPRODUTOS.ID_GRUPOPRODUTOS, ITENSMOVPRODUTOS.ID_PRODUTOS


neste select ele me traz 3 colunas (QTDE - TOTAL - ID_PRODUTOS)
*********

SELECT SUM(QTDE*VLRUNITARIO- VLRDESCONTO) AS TOTAL, ITENSMOVPRODUTOS.ID_GRUPOPRODUTOS
FROM ITENSMOVPRODUTOS INNER JOIN MOVPRODUTOS ON 
MOVPRODUTOS.ID_MOVPRODUTOS = ITENSMOVPRODUTOS.ID_MOVPRODUTOS 
WHERE ITENSMOVPRODUTOS.STATUS = 1 AND 
MOVPRODUTOS.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´ 
GROUP BY ITENSMOVPRODUTOS.ID_GRUPOPRODUTOS


neste select ele me traz 2 colunas (TOTAL - ID_GRUPOPRODUTOS)

eu qria ´unir´ estes dois selects, deixa - los num select so.... Alguma dica?
*********


Output

Output

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

07/08/2007

diretamente creio que não, pois numa você agrupa pelo código do produto e na outra você agrupa pelo grupo do produto. o que você pode fazer é uma sub-select.
SELECT
  SUM(IMP.QTDE) AS QTDE,
  SUM(IMP.QTDE*(IMP.VLRUNITARIO - IMP.VLRDESCONTO)) AS TOTAL_PRODUTO,
  IMP.ID_PRODUTOS,
  IMP.ID_GRUPOPRODUTOS,
  (SELECT
     SUM(IMP2.QTDE*(IMP2.VLRUNITARIO - IMP2.VLRDESCONTO))
   FROM
     ITENSMOVPRODUTOS IMP2
   INNER JOIN
     MOVPRODUTOS MP2 ON MP2.ID_MOVPRODUTOS = IMP2.ID_MOVPRODUTOS
   WHERE
     IMP2.STATUS = 1 AND
     MP2.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´ AND
     IMP2.ID_GRUPOPRODUTOS = IMP.ID_GRUPOPRODUTOS) TOTAL_GRUPO
FROM
  ITENSMOVPRODUTOS IMP
INNER JOIN
  MOVPRODUTOS MP ON MP.ID_MOVPRODUTOS = IMP.ID_MOVPRODUTOS
WHERE
  IMP.STATUS = 1 AND
  MP.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´
GROUP BY
  IMP.ID_GRUPOPRODUTOS, IMP.ID_PRODUTOS



GOSTEI 0
Output

Output

07/08/2007

Opa boa kra ...
+ uma vez vlw pela ajuda ...

naum qrendo se aproveitar, mais daria pra dar um [b:8ebc349d9f]SUM(IMP.QTDE*(IMP.VLRUNITARIO - IMP.VLRDESCONTO)) AS TOTAL_FORMA [/b:8ebc349d9f]neste msm select so q este sum agrupando por IMP.FORMAPGTO ???


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

07/08/2007

só dará certo se você puser IMP.FORMAPGTO no agrupamento principal, mas isso implicará na alteração dos valores exibidos antes desta alteração. talvez seja melhor executar as instruções separadamente, visto que são informações distintas.
SELECT
  SUM(IMP.QTDE) AS QTDE,
  SUM(IMP.QTDE*(IMP.VLRUNITARIO - IMP.VLRDESCONTO)) AS TOTAL_PRODUTO,
  IMP.ID_PRODUTOS,
  IMP.ID_GRUPOPRODUTOS,
  IMP.FORMAPGTO,
  (SELECT
     SUM(IMP2.QTDE*(IMP2.VLRUNITARIO - IMP2.VLRDESCONTO))
   FROM
     ITENSMOVPRODUTOS IMP2
   INNER JOIN
     MOVPRODUTOS MP2 ON MP2.ID_MOVPRODUTOS = IMP2.ID_MOVPRODUTOS
   WHERE
     IMP2.STATUS = 1 AND
     MP2.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´ AND
     IMP2.ID_GRUPOPRODUTOS = IMP.ID_GRUPOPRODUTOS) TOTAL_GRUPO,
  (SELECT
     SUM(IMP2.QTDE*(IMP2.VLRUNITARIO - IMP2.VLRDESCONTO))
   FROM
     ITENSMOVPRODUTOS IMP2
   INNER JOIN
     MOVPRODUTOS MP2 ON MP2.ID_MOVPRODUTOS = IMP2.ID_MOVPRODUTOS
   WHERE
     IMP2.STATUS = 1 AND
     MP2.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´ AND
     IMP2.FORMAPGTO = IMP.FORMAPGTO) TOTAL_FORMA
FROM
  ITENSMOVPRODUTOS IMP
INNER JOIN
  MOVPRODUTOS MP ON MP.ID_MOVPRODUTOS = IMP.ID_MOVPRODUTOS
WHERE
  IMP.STATUS = 1 AND
  MP.DATA BETWEEN ´2007-08-07´ AND ´2007-08-07 23:59:59´
GROUP BY
  IMP.ID_GRUPOPRODUTOS, IMP.FORMAPGTO, IMP.ID_PRODUTOS



GOSTEI 0
Output

Output

07/08/2007

ow [b:7699f60549]emerson.en[/b:7699f60549]
vlw kra ... exatamente isto q eu qria ...
Forte Abraço amigo ...


GOSTEI 0
POSTAR