webForumDet fria alternativet

Subselect syntax

Databaser & SQLur Databashanterare & SQL

2 svar · 365 visningar · startad av wazid

Medlem sedan maj 2001156 inlägg
Frågan#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

Medlem 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?

Medlem 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

133 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)