2011-01-19 12 views
4

私はクエリから得た結果を操作したいと思います。mysqlクエリの結果を変更する

私は2.5m行のセットを持っており、ステータスには10種類のIDがあります。これらのステータスは別のテーブルにマップされていませんが、SQLyogで取得した結果を操作したいと思います。

What I would like to do is: 

Count(Id) | Status 
------------------ 
500.000 | 1 
750.000 | 2 

convert into a result 

Count(Id) | Status 
------------------- 
500.000 | Initial order 
750.000 | Cancelled 

これはクエリで実行できますか?私は結果を表示するためにPHPやブラウザを使用していないことに注意してください。

答えて

4
select 
     count(*) as TotalRecs, 
     case status 
     when 1 then "Initial Order" 
     when 2 then "Cancelled " 
     when 3 then "whatever  " 
     else  "all others " 
     end case as WordStatus 
    from 
     YourTable 
    group by 
     2 
+0

ありがとうございました!私は後でそれを試してみよう! +1 – Ben

+0

'end case as wordstatus'の部分で' end case'を 'end'にしますか?私はCASE ... ENDの後に 'CASE'を持つENDを覚えていません。 'group by 2'の作業はありません – RichardTheKiwi

+0

@Cyber​​kiwi END CASEは、CASE STATUSの開始を閉じます。Group by 2に関しては、それはクエリの順序カラム位置(WordStatusとして表される)を参照しているので合法です。したがって、あなたの数は、数値表現の代わりに文脈のコンテキストによってグループ化されます。 – DRapp

0

あなたはcase文

select COUNT(id), 
    case status 
    when 1 then 'initial order' 
    when 2 then 'cancelled' 
    # without an else, the rest go to NULL 
    end status 
from tbl 
group by status # yes, just on status 

でそれをインライン化するか、または私は強く、この

TBL Statusのための参照テーブルを作成することをお勧めしますが2列IDDescription

が含まれています
select COUNT(tbl.id), status.description 
from tbl 
LEFT join status on status.id = tbl.status 
group by status.description 
+0

ありがとうございました。これも解決策です:) – Ben

関連する問題