1
select site,
case
when site='AppCircle' then (count(create_dtime)*0.4438083264)
when site='AppCircle Clips' then (count(create_dtime)*0.0096978792)
when site='BC : SponsorPay' then (count(create_dtime)*0.9620989399)
when site='BonusCoins.com : Aarki' then (count(create_dtime)*0.4612565445)
when site='Nielsen Rewards' then (count(create_dtime)*-0.6000000000)
when site ='Portal : Paymentwall' then (count(create_dtime)*0.5433541667)
when site ='Portal : RadiumOne' then (count(create_dtime)*0.0619798753)
when site ='Portal : TrialPay' then (count(create_dtime)*2.1468159204)
when site ='bonuscp_login' then (count(create_dtime)*-0.1500000000)
when site ='facebook_like' then (count(create_dtime)*2.1468159204)
when site ='iTunes' then (count(create_dtime)*-0.0300000000)
end
From player_aux_pt
Where
Trunc(Create_Dtime) >= To_Date('2012-Nov-01','yyyy-mon-dd')
And Trunc(Create_Dtime) <= To_Date('2012-Nov-30','yyyy-mon-dd')  
group by site

これにより、2列のデータが生成されます

Site    [insert every case statement here]

情報の2番目の列に「Profit」という名前を付けたいだけです

Site    Profit

私は行き詰まっている多くの異なる方法を試しました。

4

2 に答える 2

4

ASを使用して、SQLの列と式の名前を変更(または名前付け)できます。

CASE 
  WHEN. . .
  WHEN. . .
END AS Profit

ただし、そのようにCASE式を使用することは、あまり拡張可能ではありません。乗算係数を別のテーブルに移動し、キーを入力してsiteから、そのテーブルをクエリに結合することを検討してください。

于 2012-12-17T21:59:14.200 に答える
3

注:CASEステートメントは単なる基本的なDECODEパターンであるため、簡潔な代替案についてはリンクを確認してください。

select site,
       count(create_dtime)
     * DECODE(site, 'AppCircle', 0.4438083264,
                    'AppCircle Clips', 0.0096978792,
                    'BC : SponsorPay', 0.9620989399,
                    ......) Profit
 ....


式またはベース列名の後に名前を付けることで、列にエイリアスを付けることができます。

SELECT
    Site,
    Site ReNamedSite,
    Concat(Site,'a') "AddedAnA",
    COALESCE(Site,Address) AS "Two Words"
...

ノート:

  1. キーワードASはオプションです
  2. 複数の単語を使用しない限り、二重引用符の使用はオプションです。

すなわち

select site,
case
when site='AppCircle' then (count(create_dtime)*0.4438083264)
when site='AppCircle Clips' then (count(create_dtime)*0.0096978792)
when site='BC : SponsorPay' then (count(create_dtime)*0.9620989399)
when site='BonusCoins.com : Aarki' then (count(create_dtime)*0.4612565445)
when site='Nielsen Rewards' then (count(create_dtime)*-0.6000000000)
when site ='Portal : Paymentwall' then (count(create_dtime)*0.5433541667)
when site ='Portal : RadiumOne' then (count(create_dtime)*0.0619798753)
when site ='Portal : TrialPay' then (count(create_dtime)*2.1468159204)
when site ='bonuscp_login' then (count(create_dtime)*-0.1500000000)
when site ='facebook_like' then (count(create_dtime)*2.1468159204)
when site ='iTunes' then (count(create_dtime)*-0.0300000000)
end Profit
From player_aux_pt
Where
Trunc(Create_Dtime) >= To_Date('2012-Nov-01','yyyy-mon-dd')
And Trunc(Create_Dtime) <= To_Date('2012-Nov-30','yyyy-mon-dd')  
group by site
于 2012-12-17T21:59:48.110 に答える