title: Show SQL case statement as different columns
body: <p>Is it possible to have each <code>WHEN</code> in a case statement be output in its own column? I tried it but with no luck. The closest I have come to what I want is below.</p>
  
  <p>I currently have a query as follows:</p>
  
  <pre><code>select BH.BATCH                 as batch_number, 
         BS.TBS_DESCRIPTION       as batch_description,
         BH.NUM_VOUCHERS          as "NUM_VOUCHERS(BATCH)",
         case when VS.TVS_CODE = 1 then count(*) else 0 end as in_stock,
         case when VS.TVS_CODE = 3 then count(*) else 0 end as terminate,
         case when VS.TVS_CODE = 5 then count(*) else 0 end as in_progress,
         case when VS.TVS_CODE = 6 then count(*) else 0 end as used,
         case when VS.TVS_CODE = 8 then count(*) else 0 end as deactivate
  from BATCH_HIST   bh,
       BATCH_STATUS bs,
       VOUCH_HIST   vh,
       VOUCH_STATUS vs
  where substr(BH.ALLOCAT_DATE, 1, 6) = 201207
  and   to_char(BH.STATUS) = BS.TBS_CODE
  and   BH.BATCH = VH.BATCH
  and   to_char(VH.STATUS) = VS.TVS_CODE
  group by BH.BATCH,
           BS.TBS_DESCRIPTION,
           BH.NUM_VOUCHERS,
           VS.TVS_CODE
  order by 1,2,3;
  </code></pre>
  
  <p>This gives me the following output, with each <code>STATUS</code> as a different record:</p>
  
  <pre><code>BATCH_NUMBER  | BATCH_DESCRIPTION  | NUM_VOUCHERS(BATCH)  | IN_STOCK  | TERMINATE  | IN_PROGRESS  | USED  | DEACTIVATE
  ------------------------------------------------------------------------------------------------------------------------------
  4413565       |  Allocate          |  100                 |  67       |  0         |  0           |  0    |  0
  4413565       |  Allocate          |  100                 |  0        |  0         |  0           |  33   |  0
  4413566       |  Allocate          |  100                 |  63       |  0         |  0           |  0    |  0
  4413566       |  Allocate          |  100                 |  0        |  0         |  0           |  37   |  0
  </code></pre>
  
  <p>I want this grouped together, so that there is one record per <code>BATCH_NUMBER</code>:</p>
  
  <pre><code>BATCH_NUMBER  | BATCH_DESCRIPTION  | NUM_VOUCHERS(BATCH)  | IN_STOCK  | TERMINATE  | IN_PROGRESS  | USED  | DEACTIVATE
  ------------------------------------------------------------------------------------------------------------------------------
  4413565       |  Allocate          |  100                 |  67       |  0         |  0           |  33   |  0
  4413566       |  Allocate          |  100                 |  63       |  0         |  0           |  37   |  0
  </code></pre>