I used to make Pivot-table-like reports in (what I thought was) the normal way:

SELECT ProductID, sum(QtyMade) AS TotQty,
   (sum(CASE  Mth  WHEN  1  THEN  QtyMade  ELSE  0  END)) AS 'Jan Qty'
,(sum(CASE  Mth  WHEN  2  THEN  QtyMade  ELSE  0  END)) AS 'Feb Qty'
  ,(sum(CASE  Mth  WHEN  3  THEN  QtyMade  ELSE  0  END)) AS 'Mar Qty'
...
  ,(sum(CASE  Mth  WHEN 11 THEN  QtyMade  ELSE  0  END)) AS 'Nov Qty'
  ,(sum(CASE  Mth  WHEN 12 THEN  QtyMade  ELSE  0  END)) AS 'Dec Qty'
FROM ProductionHist
WHERE Year=2014
GROUP BY ProductID
ORDER BY TotQty DESC;

etc.

Which of course works fine if you have a predeterminable set of columns to extract, such as Months in the above case. How can I do this sort of thing (i'm only interested in similar results, the method is not important) for an indetermintate set of columns?

   Example data:
   ID  |  Product |  Group|  Qty
   ----+----------+--------+-------
   1 |  ABC001  |    A   |  10
   2 |  ABC001  |    A   |  20
      3 |  ABC002  |    A   |  10
   4 |  ABC001  |    B   |  10
   5 |  ABC002  |    B   |  20
   6 |  ABC001  |    F   |  60
   ...
     97 |  ABC001  |    n   |  20
     98 |  ABC002  |    n   |  30

   To produce a result like:

   Product |  Tot Group A  |  Tot Group B  | ... | Tot Group n
   --------+---------------+---------------+-----+-------------
   ABC001  |       30      |      10       | ... |     20
   ABC002  |       10      |      20       | ... |     30


Both Products and Groups are indeterminate. I toyed with the idea of making a temporary table or CTE with DISTINCT to contain only unique values for one set (either Procucts or Groups in the above example) and then maybe derive another table and finally a "SELECT * " query which would simply reproduce all, but of course that won't work - somewhere along the line you need a handle on the number of output columns.

I know this is easy in a program or in a spreadsheet, but I am trying to produce some queries without such dependancies. If anyone has an idea how to achieve something like this (even if very technical or convoluted) it would be much appreciated.

Thanks,
Ryan



_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to