webForumDet fria alternativet

Subselect syntax

2 svar · 365 visningar · startad av wazid

wazidMedlem sedan maj 2001156 inlägg
#1

Hej

Jag vill ta fram en statistik gällande kunders omsättning, där jag vill jämföra två perioder och räkna fram differensen.

En bit på väg kom jag, men den klagar på att uträkningen av diffen samt att subselect sk börja rmed Exists?

Finns den någon som kan ge en hjälpande hand?

SELECT     OKCUNO, OKCUNM, SUM(UCSAAM) AS oms1, SUM(UCSAAM) - SUM(oms2) AS Expr1
FROM         dbo.DL_kundomsattning r
WHERE     (UCIVDT BETWEEN 20060101 AND 20061231)
GROUP BY OKCUNO, OKCUNM, OKSMCD
HAVING      (OKCUNO IN
                          (SELECT     OKCUNO, SUM(UCSAAM) AS oms2
                            FROM          dbo.DL_kundomsattning
                            WHERE      r.OKCUNO = dbo.DL_kundomsattning.OKCUNO AND (UCIVDT BETWEEN 20050101 AND 20051231) AND (OKSMCD = '108')
                            GROUP BY OKCUNO))

Mvh

David

LarsGMedlem sedan dec. 200012 464 inlägg
#2
SELECT  OKCUNO, 
        OKCUNM, 
        SUM(UCSAAM) AS oms1, 
        SUM(UCSAAM) - 
           (select sum(ucsaam)
              from dbo.DL_kundomsattning
      WHERE r.OKCUNO = dbo.DL_kundomsattning.OKCUNO 
        AND UCIVDT BETWEEN 20050101 AND 20051231
        AND OKSMCD = '108')
FROM   dbo.DL_kundomsattning r
WHERE UCIVDT BETWEEN 20060101 AND 20061231
GROUP BY OKCUNO, OKCUNM,OKSMCD

Varför har du inget villkor på OKUCNM i den inre selecten?
Varför har du inget villkor på OKSMCD i den yttre selecten?
Vad har UCIVDT för datatyp?
Vad har OKSMCD för datatyp?

wazidMedlem sedan maj 2001156 inlägg
#3

Hej

Tack för hjälpen.
La till villkor på de som saknades.
Det fungerar perfekt! Så som jag ville ha det!

Bockar och bugar!

//David

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
123 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)