2013-10-07 38 views
0

我有下面的SQL代碼 -重複值

select distinct opr, 
    CASE 
      WHEN timestamp like '201302%' THEN ((SUM (charge/POWER (10, decimals)) OVER (PARTITION BY opr) * 1.15306)) 
      WHEN timestamp like '201303%' THEN ((SUM (charge/POWER (10, decimals)) OVER (PARTITION BY opr)* 1.14979)) 
      ELSE 0 
     END as exr 
    FROM in 
group by opr, timestamp, (charge/POWER (10, decimals)) 

,我希望獲得的價值 - 1080.104079

enter image description here

但是,它給了我兩個值 -

enter image description here

此值1079.459992的就是,因爲EXR已經席捲而來,這是不對的,因爲收費「二月」應該在EXR相乘爲「二月」

enter image description here

莫非你請幫我修改代碼,這樣我才能收到真正的值,即1080.104079。

回答

1

如果你需要的是一個結果,你可以嘗試事例邏輯移動到SUM函數本身:

問題的
select opr, 
    SUM(CASE 
      WHEN timestamp like '201302%' THEN ((charge/POWER (10, decimals)) * 1.15306) 
      WHEN timestamp like '201303%' THEN ((charge/POWER (10, decimals)) * 1.14979) 
      ELSE 0 
     END) 
     as exr 
    FROM in 
group by opr 
having opr = 'DOM'; 

部分似乎是你被多列分組,但選擇只有一兩個。如果您僅通過opr列進行分組,則只應獲取「DOM」的一行。

+0

很好,它的工作。非常感謝你的幫助 :) – Kristiana