Обсуждение: SQL Query Help Please !

Поиск
Список
Период
Сортировка

SQL Query Help Please !

От
GrGsM
Дата:
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.


Re: SQL Query Help Please !

От
Thomas Kellerer
Дата:
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




Re: SQL Query Help Please !

От
Sam Mason
Дата:
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/

Re: SQL Query Help Please !

От
Guy Rouillier
Дата:
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