Ayuda con Query

07/01/2010 - 01:02 por Gabrielg | Informe spam
Hola a todos
Tengo este query:
SELECT
dbo.JDT1.Account,
Balance_001 = CASE
when ((dbo.JDT1.Account like '1%' or dbo.JDT1.Account like '2%')
AND dbo.JDT1.RefDate between '01/01/09' AND '31/12/09')
then SUM(dbo.JDT1.SYSDeb - dbo.JDT1.SYSCred)
when ((dbo.JDT1.Account not like '1%'
and dbo.JDT1.Account not like '2%')
AND dbo.JDT1.RefDate <= '31/12/09')
then SUM(dbo.JDT1.SYSDeb - dbo.JDT1.SYSCred)
ELSE '0' END
FROM dbo.JDT1
WHERE dbo.JDT1.TransType <> '-3'
GROUP BY dbo.JDT1.Account, dbo.JDT1.RefDate

El tema es que yo no quiero agrupar segun el Campo Refdate, solo lo
quiero agrupar por Account.
Si lo saco me da error.
Como puedo reformular el query para obtener lo que necesito (GROUP BY
dbo.JDT1.Account)

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
07/01/2010 - 04:24 | Informe spam
Trata poniendo la expresion CASE dentro de la funcion de agrupacion.

SELECT
dbo.JDT1.Account,
Balance_001 = SUM(
CASE
WHEN (
(dbo.JDT1.Account like '1%' or dbo.JDT1.Account like '2%')
AND dbo.JDT1.RefDate between '01/01/09' AND '31/12/09') THEN
(dbo.JDT1.SYSDeb - dbo.JDT1.SYSCred)
WHEN (
(dbo.JDT1.Account not like '1%' and dbo.JDT1.Account not like '2%')
AND dbo.JDT1.RefDate <= '31/12/09') THEN (dbo.JDT1.SYSDeb -
dbo.JDT1.SYSCred)
ELSE 0
END)
FROM dbo.JDT1
WHERE dbo.JDT1.TransType <> '-3'
GROUP BY dbo.JDT1.Account;


AMB

"Gabrielg" wrote:

Hola a todos
Tengo este query:
SELECT
dbo.JDT1.Account,
Balance_001 = CASE
when ((dbo.JDT1.Account like '1%' or dbo.JDT1.Account like '2%')
AND dbo.JDT1.RefDate between '01/01/09' AND '31/12/09')
then SUM(dbo.JDT1.SYSDeb - dbo.JDT1.SYSCred)
when ((dbo.JDT1.Account not like '1%'
and dbo.JDT1.Account not like '2%')
AND dbo.JDT1.RefDate <= '31/12/09')
then SUM(dbo.JDT1.SYSDeb - dbo.JDT1.SYSCred)
ELSE '0' END
FROM dbo.JDT1
WHERE dbo.JDT1.TransType <> '-3'
GROUP BY dbo.JDT1.Account, dbo.JDT1.RefDate

El tema es que yo no quiero agrupar segun el Campo Refdate, solo lo
quiero agrupar por Account.
Si lo saco me da error.
Como puedo reformular el query para obtener lo que necesito (GROUP BY
dbo.JDT1.Account)
.

Respuesta Responder a este mensaje
#2 Gabrielg
23/01/2010 - 17:58 | Informe spam
On Jan 6, 9:24 pm, Alejandro Mesa
wrote:
Trata poniendo la expresion CASE dentro de la funcion de agrupacion.

SELECT
        dbo.JDT1.Account,
        Balance_001 = SUM(
        CASE
        WHEN (
            (dbo.JDT1.Account like '1%' or dbo.JDT1.Account like '2%')
                AND dbo.JDT1.RefDate between '01/01/09' AND '31/12/09') THEN
(dbo.JDT1.SYSDeb - dbo.JDT1.SYSCred)
    WHEN (
        (dbo.JDT1.Account not like '1%' and dbo.JDT1.Account not like '2%')
                AND dbo.JDT1.RefDate <= '31/12/09') THEN (dbo.JDT1.SYSDeb -
dbo.JDT1.SYSCred)
    ELSE 0
    END)
FROM dbo.JDT1
WHERE dbo.JDT1.TransType <> '-3'
GROUP BY dbo.JDT1.Account;

AMB



"Gabrielg" wrote:
> Hola a todos
> Tengo este query:
> SELECT
>            dbo.JDT1.Account,
>            Balance_001 = CASE
>                     when ((dbo.JDT1.Account like '1%' or dbo.JDT1.Account like '2%')
>                                    AND dbo.JDT1.RefDate between '01/01/09' AND '31/12/09')
>                                    then SUM(dbo.JDT1.SYSDeb - dbo.JDT1.SYSCred)
>                                  when ((dbo.JDT1.Account not like '1%'
> and dbo.JDT1.Account not like '2%')
>                                    AND dbo.JDT1.RefDate <= '31/12/09')
>                                    then SUM(dbo.JDT1.SYSDeb - dbo.JDT1.SYSCred)
>             ELSE '0' END
>            FROM dbo.JDT1
>     WHERE dbo.JDT1.TransType <> '-3'
>     GROUP BY dbo.JDT1.Account, dbo.JDT1.RefDate

> El tema es que yo no quiero agrupar segun el Campo Refdate, solo lo
> quiero agrupar por Account.
> Si lo saco me da error.
> Como puedo reformular el query para obtener lo que necesito (GROUP BY
> dbo.JDT1.Account)
> .- Hide quoted text -

- Show quoted text -



Muchas gracias por la ayuda,

Tengo otro caso similar, donde solo quiero agrupar por Project y
PrjName pero necesito hacer un case para cambiar valores fuera de la
suma.

Gracias,

SELECT
Project = case when SBI_001.dbo.JDT1.Project IS NULL then '999'
when SBI_001.dbo.JDT1.Account = '10006141' AND
SBI_001.dbo.JDT1.Project = '031'
then '777'
ELSE SBI_001.dbo.JDT1.Project END,
SUM (SBI_001.dbo.JDT1.Debit - SBI_001.dbo.JDT1.Credit)
Balance_001,
FROM SBI_001.dbo.JDT1
GROUP BY Project, PrjName
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida