Solved

SQL Group by

Posted on 2014-01-02
4
252 Views
Last Modified: 2014-01-02
Hello,
can you please help.
I'm trying to group this properly to get only 1 line per client.
but I get quite few.
here is the code

Select  Distinct 'Accountnumber' AS [Accountnumber],
 'WEB' AS [WEB],
 'CSR' AS [CSR]
        From FinalizedOrders
     WHERE 1 = 1
Union All
Select  CONVERT(varchar, Accountnumber, 1)  AS [Accountnumber],
(Select CONVERT (varchar, Count (Operator), 1) where Operator like 'web' ) AS [WEB] ,
(Select CONVERT (varchar, Count (Operator), 1) where Operator not like 'web' ) AS [CSR]
From FinalizedOrders
where accountnumber IN (423,116) and orderdate between '2013-01-01' and '2013-12-31'
Group by Accountnumber, Operator

Sample Results
Accountnumber      WEB      CSR
116                              NULL       31
116                              NULL      6
116                        NULL      30
423                             NULL      13
423                             NULL      15
116                             6679      NULL
423                             NULL      13
423                             474             NULL

it should be
Accountnumber      WEB      CSR
116                              6679      67
423                              474               31

thanks
0
Comment
Question by:W.E.B
  • 3
4 Comments
 
LVL 24

Accepted Solution

by:
chaau earned 300 total points
ID: 39752824
Modify the second select statement like this:
Select  CONVERT(varchar, Accountnumber, 1)  AS [Accountnumber],
CONVERT (varchar, Count (CASE WHEN Operator like 'web' THEN Operator ELSE NULL END)) AS [WEB] ,
CONVERT (varchar, Count (CASE WHEN Operator like 'web' THEN NULL ELSE Operator END))  AS [CSR]
From FinalizedOrders
where accountnumber IN (423,116) and orderdate between '2013-01-01' and '2013-12-31'
Group by Accountnumber, Operator

Open in new window

BTW, for the first select statement you do not need to do SELECT FROM, just use:
Select  'Accountnumber' AS [Accountnumber],
 'WEB' AS [WEB],
 'CSR' AS [CSR]

Open in new window

So, the whole query will be:
Select  'Accountnumber' AS [Accountnumber],
 'WEB' AS [WEB],
 'CSR' AS [CSR]
UNION ALL
SELECT [Accountnumber], [WEB], [CSR] FROM
(Select  CONVERT(varchar, Accountnumber, 1)  AS [Accountnumber],
CONVERT (varchar, Count (CASE WHEN Operator like 'web' THEN Operator ELSE NULL END)) AS [WEB] ,
CONVERT (varchar, Count (CASE WHEN Operator like 'web' THEN NULL ELSE Operator END))  AS [CSR]
From FinalizedOrders
where accountnumber IN (423,116) and orderdate between '2013-01-01' and '2013-12-31'
Group by Accountnumber, Operator) AS T

Open in new window

0
 

Author Comment

by:W.E.B
ID: 39752829
hello,
thanks for your help,
i still get more than one line,

sample
Accountnumber      WEB      CSR
423                                0              15
116                              6679      0
423                       0               13
423                         474                0
116                             0                50
116                             0                48
423                       0                6
423                            0                2
116                            0                31
0
 

Author Comment

by:W.E.B
ID: 39752850
OK, it's good,
I just needed to change
Group by Accountnumber,) AS T

thanks
0
 

Author Closing Comment

by:W.E.B
ID: 39752851
thank you
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

SQL Server engine let you use a Windows account or a SQL Server account to connect to a SQL Server instance. This can be configured immediatly during the SQL Server installation or after in the Server Authentication section in the Server properties …
Use this article to create a batch file to backup a Microsoft SQL Server database to a Windows folder.  The folder can be on the local hard drive or on a network share.  This batch file will query the SQL server to get the current date & time and wi…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question