SQL Query Help Please !

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