5

Supposed that I have table below:

1) tblScore

============================ 
Date      VendorID     Score 
============================ 
12/09/01  12001        A     
12/09/01  12001        A     
12/09/01  12002        B     
12/09/02  12003        C     
12/09/02  12003        A     
12/09/03  12001        C     
============================ 

I have this query:

SELECT ts.VendorID, ts.Score, COUNT(*)
FROM trxscore ts
GROUP BY ts.VendorID, ts.Score
ORDER BY ts.VendorID, ts.Score

But how to show the table like:

===========================
VendorID    A    B    C
===========================
12001       2    0    1
12002       0    1    0 
12003       1    0    1
===========================

And, is it possible to get an average from a text? i.e., VendorID 12001 should get the average of A. Thanks...

John Woo
  • 258,903
  • 69
  • 498
  • 492
mrjimoy_05
  • 3,452
  • 9
  • 58
  • 95

1 Answers1

8

Try this,

SELECT  VendorID,
        SUM(CASE WHEN Score = 'A' THEN 1 ELSE 0 END) totalA,
        SUM(CASE WHEN Score = 'B' THEN 1 ELSE 0 END) totalB,
        SUM(CASE WHEN Score = 'C' THEN 1 ELSE 0 END) totalC
FROM    tableName
GROUP BY VendorID

SQLFiddle Demo

A Friend
  • 1,420
  • 17
  • 22
John Woo
  • 258,903
  • 69
  • 498
  • 492