I can't seem to get to the online manual to check at the moment, but I'd
guess that dec is a reserved word. Sorry about that. Just put single
quotes around it.
SELECT
c.Category,
g11.Reqvalue AS 'Nov',
g12.Reqvalue AS 'Dec'
FROM
goaldata g11
JOIN goaldata g12
ON g11.catid = g12.catid AND g11.GoalMonth = 11 AND g12.GoalMonth = 12
JOIN category c ON g11.catid=c.id;
Or
SELECT
c.Category,
SUM(IF(g.GoalMonth = 11, g.Reqvalue, 0)) AS 'Nov',
SUM(IF(g.GoalMonth = 12, g.Reqvalue, 0)) AS 'Dec',
FROM
goaldata g
JOIN category c ON g.catid=c.id;
GROUP BY c.Category;
Michael
Scott Hamm wrote:
Michael and Shawn's suggestions came into exactly same error:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual
that
corresponds to your MySQL server version for the right syntax to use near
'Dec,
I'm running 5.0.1-alpha-nt.
-----Original Message-----
From: Michael Stassen [mailto:[EMAIL PROTECTED]
Sent: Friday, November 05, 2004 9:42 AM
To: Scott Hamm
Cc: 'Mysql ' (E-mail)
Subject: Re: Column grouped by months
I believe you need a self join. Something like
SELECT
c.Category,
g11.Reqvalue AS Nov,
g12.Reqvalue AS Dec
FROM
goaldata g11
JOIN goaldata g12
ON g11.catid = g12.catid AND g11.GoalMonth = 11 AND g12.GoalMonth = 12
JOIN category c ON g11.catid=c.id;
This might also work:
SELECT
c.Category,
SUM(IF(g.GoalMonth = 11, g.Reqvalue, 0)) AS Nov,
SUM(IF(g.GoalMonth = 12, g.Reqvalue, 0)) AS Dec,
FROM
goaldata g
JOIN category c ON g.catid=c.id;
GROUP BY c.Category;
Note that if you ever have more than one row with a particular
Category-GoalMonth combination (in the 2nd year, perhaps), the first query
will give extra rows while the second will add the values. Assuming that's
not what you want, you'd have to add an appropriate WHERE condition to limit
the results to the right rows (months), or otherwise alter the query to fit
however you decide to handle that case.
Michael
Scott Hamm wrote:
My current database:
mysql> SELECT
-> Category.Category,
-> GoalData.Reqvalue,
-> GoalData.GoalMonth
-> FROM
-> goaldata,
-> category
-> WHERE
-> goaldata.catid=category.id;
+-------------------------------------+----------+-----------+
| Category | Reqvalue | GoalMonth |
+-------------------------------------+----------+-----------+
| Mailroom Mail Opening Orders | 54 | 11 |
| Mailroom Rewards | 150 | 11 |
| Mailroom QC Opening Orders | 135 | 12 |
| Mailroom Opening Surveys | 200 | 11 |
| Mailroom QC Surveys | 350 | 11 |
| Mailroom Opening Resubmissions | 90 | 11 |
| Mailroom QC Resubmissions | 250 | 12 |
| Mailroom Microfilming | 700 | 11 |
| Mailroom Taping | 175 | 11 |
| Mailroom QC Taping | 350 | 11 |
| Mailroom Scanning | 1200 | 12 |
| Data Entry Orders (Key from paper) | 35 | 11 |
| Date Entry Surveys (Key form paper) | 45 | 11 |
| Data Entry Resubmissions | 50 | 11 |
| Data Entry Orders (Key from image) | 30 | 12 |
| Data Entry Surveys (Key from image) | 50 | 11 |
...
I want my output to look like this:
+-------------------------------------+----------+----------+
| category | Nov | Dec |
+-------------------------------------+----------+----------+
| Mailroom Mail Opening Orders | 54 | 54 |
| Mailroom Rewards | 150 | 150 |
| Mailroom QC Opening Orders | 135 | 135 |
| Mailroom Opening Surveys | 200 | 200 |
| Mailroom QC Surveys | 350 | 350 |
| Mailroom Opening Resubmissions | 90 | 90 |
| Mailroom QC Resubmissions | 250 | 250 |
| Mailroom Microfilming | 700 | 700 |
| Mailroom Taping | 175 | 175 |
| Mailroom QC Taping | 350 | 350 |
| Mailroom Scanning | 1200 | 1200 |
| Data Entry Orders (Key from paper) | 35 | 35 |
| Date Entry Surveys (Key form paper) | 45 | 45 |
| Data Entry Resubmissions | 50 | 50 |
| Data Entry Orders (Key from image) | 30 | 30 |
| Data Entry Surveys (Key from image) | 50 | 50 |
| Data Entry QC | 55 | 55 |
+-------------------------------------+----------+----------+
Something like this didn't work --
SELECT
category.category,
goaldata.reqvalue,
goaldata.goalmonth=11 as Nov,
goaldata.goalmonth=12 as Dec
FROM
category,
goaldata
WHERE
goaldata.catid=goaldata.id;
How can I get around to it?
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]