Lists: | pgsql-general |
---|
From: | GrGsM <shaik2(at)navionicsindia(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | SQL Query Help Please ! |
Date: | 2010-07-06 07:06:06 |
Message-ID: | 29082529.post@talk.nabble.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-general |
Hi all
I am using the following query for data to be displayed in crosstab :
SELECT closedate,status,
SUM (CASE WHEN empcode = 'NT-028' THEN 1 ELSE 0 END) AS NT028,
SUM (CASE WHEN empcode = 'NT-031' THEN 1 ELSE 0 END) AS NT031,
SUM (CASE WHEN empcode = 'NT-050' THEN 1 ELSE 0 END) AS NT050,
SUM (CASE WHEN empcode = 'NT-062' THEN 1 ELSE 0 END) AS NT062
FROM dbcleaning
WHERE status = 'Fixed'
AND empcode IN
('NT-028',
'NT-031',
'NT-050',
'NT-062')
GROUP BY closedate, status
Now i need a column in the same result of the query which shows the
difference between the two columns .
For Example :
the result shoud be
Closedate , status , NT028, NT031, NT050,NT062 , NT028-NT031
Please note the last column in bold, i need the difference .
Any help will be highly appreciated
--
View this message in context: http://old.nabble.com/SQL-Query-Help-Please-%21-tp29082529p29082529.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.
From: | Thomas Kellerer <spam_eater(at)gmx(dot)net> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: SQL Query Help Please ! |
Date: | 2010-07-06 15:32:54 |
Message-ID: | i0vib6$7br$1@dough.gmane.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-general |
GrGsM, 06.07.2010 09:06:
> Now i need a column in the same result of the query which shows the
> difference between the two columns .
>
> For Example :
>
> the result shoud be
>
> Closedate , status , NT028, NT031, NT050,NT062 , NT028-NT031
>
> Please note the last column in bold, i need the difference .
>
Already answered here:
http://www.dbforums.com/postgresql/1658135-sql-query-help-please.html
From: | Sam Mason <sam(at)samason(dot)me(dot)uk> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: SQL Query Help Please ! |
Date: | 2010-07-06 15:35:09 |
Message-ID: | 20100706153509.GT7584@samason.me.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-general |
On Tue, Jul 06, 2010 at 12:06:06AM -0700, GrGsM wrote:
> SELECT closedate,status,
> SUM (CASE WHEN empcode = 'NT-028' THEN 1 ELSE 0 END) AS NT028,
> SUM (CASE WHEN empcode = 'NT-031' THEN 1 ELSE 0 END) AS NT031,
> SUM (CASE WHEN empcode = 'NT-050' THEN 1 ELSE 0 END) AS NT050,
> SUM (CASE WHEN empcode = 'NT-062' THEN 1 ELSE 0 END) AS NT062
> FROM dbcleaning
> WHERE status = 'Fixed'
> AND empcode IN
> ('NT-028',
> 'NT-031',
> 'NT-050',
> 'NT-062')
> GROUP BY closedate, status
>
> Now i need a column in the same result of the query which shows the
> difference between the two columns .
>
> For Example :
> the result shoud be
> Closedate , status , NT028, NT031, NT050,NT062 , NT028-NT031
Just put your code above in an "inner select", something like:
SELECT closedate, status, NT028-NT031 AS diff
FROM (
SELECT closedate,status, SUM(CASE WHEN ...
...
GROUP BY closedate, status) x;
--
Sam http://samason.me.uk/
From: | Guy Rouillier <guyr-ml1(at)burntmail(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: SQL Query Help Please ! |
Date: | 2010-07-06 16:59:39 |
Message-ID: | 4C3360FB.8020306@burntmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-general |
On 7/6/2010 3:06 AM, GrGsM wrote:
>
> Hi all
>
> I am using the following query for data to be displayed in crosstab :
>
> SELECT closedate,status,
> SUM (CASE WHEN empcode = 'NT-028' THEN 1 ELSE 0 END) AS NT028,
> SUM (CASE WHEN empcode = 'NT-031' THEN 1 ELSE 0 END) AS NT031,
> SUM (CASE WHEN empcode = 'NT-050' THEN 1 ELSE 0 END) AS NT050,
> SUM (CASE WHEN empcode = 'NT-062' THEN 1 ELSE 0 END) AS NT062
> FROM dbcleaning
> WHERE status = 'Fixed'
> AND empcode IN
> ('NT-028',
> 'NT-031',
> 'NT-050',
> 'NT-062')
> GROUP BY closedate, status
>
> Now i need a column in the same result of the query which shows the
> difference between the two columns .
SUM (CASE WHEN empcode = 'NT-028' THEN 1 ELSE 0 END) -
SUM (CASE WHEN empcode = 'NT-031' THEN 1 ELSE 0 END) as NT028_NT031
Or if you prefer, define an outer select with your select in the FROM
clause; in the outer select, you can select each of the 4 columns plus
any difference you like.
--
Guy Rouillier
--
Guy Rouillier