2012-07-26 43 views
1

我有一個Case When聲明做工精細:使用多個的情況下當報表

sum(CASE WHEN datepart(dw,applydtm) = '1' 
     then (cast(durationsecsqty as float)/3600) 
     else 0 
    End 
    ) as Sunday 

,但我需要添加另一個WHEN當它到達(cast(durationsecsqty as float)/3600)。此時如果返回結果爲0我想從另一列中提取值moneyamt

我想這種說法與我的第一個結合:

Case (CAST(durationsecsqty as float)/3600) 
    when 0 
    then moneyamt 
    else (CAST(durationsecsqty as float)/3600) 
end as Sunday 

回答

2

這聽起來像你需要這個:

sum(
    CASE 
     WHEN datepart(dw,applydtm) = '1' 
     then 
      CASE 
       WHEN Case (CAST(durationsecsqty as float)/3600) = 0 
       THEN moneyamt 
       ELSE (CAST(durationsecsqty as float)/3600) 
      END (cast(durationsecsqty as float)/3600) 
     else 0 
    End) as Sunday 
+0

非常感謝你。你把我放在正確的軌道上。我不得不調整一下,但一旦我做到了完美的工作。總和(CASE WHEN日期部分(DW,tot.applydtm)= '1' THEN CASE WHEN (鑄造(tot.durationsecsqty浮法)/ 3600)= '0' THEN tot.moneyamt ELSE(澆鑄(TOT。 durationsecsqty as float)/ 3600) END ELSE 0 END)as Sunday, – Kenh426 2012-07-26 16:23:52

+0

很高興爲您工作。如果您對答案滿意,請考慮通過左側的複選標記進行接受。 :) – Taryn 2012-07-26 16:27:47