一句SQL計算不同條件的數量

     經常做統計的人有體會,常常會在一個表格中體現不同條件下的某個商品的數量。比如倉庫的進出庫統計,要統計每個批次中每種貨物的數量。通常的做法是通過Select子查詢來做,不能說這種做法是錯的,但這樣做效率不高,而且閱讀性也不高,而且這些信息往往是在一張基礎表中,應該能不通過子查詢的方式,直接計算出來。經過一番研究,終于找到方法了。

     select 
        Count(case when (t.字段=條件) then 1 else null end) as  "名稱1", 
        Count(case when (t.字段=條件) then 1 else null end) as  "名稱2"
       from 表名 t

同樣,也可用在SUM的函數上

     select
        sum(case when (t.字段=條件) then 字段或數字 else 0 end) "名稱1",
        sum(case when (t.字段=條件) then 字段或數字 else 0 end) "名稱2"
       from 表名 t  

要注意的是,在Count的時候,如果不想被計數,值一定要是null,否則不管其他什么,都會被計數。

posted @ 2009-03-11 22:01  變色龍  阅读(12632)  评论(1编辑  收藏  举报