Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.databases.ms-sqlserver > #607
| From | Erland Sommarskog <esquel@sommarskog.se> |
|---|---|
| Newsgroups | comp.databases.ms-sqlserver |
| Subject | Re: Help with Query |
| Date | 2011-08-19 23:52 +0200 |
| Organization | Erland Sommarskog |
| Message-ID | <Xns9F46F2D91B55FYazorman@127.0.0.1> (permalink) |
| References | <9cb19b3e-a83f-4860-84d3-a82f12eadff7@b9g2000prd.googlegroups.com> |
FCB (dave.white19@gmail.com) writes:
> For example
>
> Account Customer First Last Status
> 1 1 James Joyce
> Active
> 1 2 Nora Barnacle Active
> 2 1 Fred Flintstone Active
> 3 1 Barney Rubble
> Inactive
> 3 2 Betty Rubble Active
>
> I'm trying to create a query that will choose the first active
> customer only. Is there a way to use the min() function to loop
> through each account number and choose the lowest customer per
> account? Or is there another function that can be used.
WITH numbered AS (
SELECT Account, First, Last, Status,
rowno = row_number()
OVER (PARTITION BY Account ORDER BY Customer)
FROM tbl
)
SELECT Account, First, Last, Status
FROM tbl
WHERE rowno = 1
The row_number() function orders the rows in the query, starting on one
for each new value in the PARTITION BY clause. The WITH thing is a
CTE, Common Table Expression, which is kind of view that exists only
for the query.
By getting the rows with row number = 1, you can easily get the first
row and all that goes with it.
--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
Links for SQL Server Books Online:
SQL 2008: http://msdn.microsoft.com/en-us/sqlserver/cc514207.aspx
SQL 2005: http://msdn.microsoft.com/en-us/sqlserver/bb895970.aspx
Back to comp.databases.ms-sqlserver | Previous | Next — Previous in thread | Next in thread | Find similar
Help with Query FCB <dave.white19@gmail.com> - 2011-08-19 13:51 -0700
Re: Help with Query Erland Sommarskog <esquel@sommarskog.se> - 2011-08-19 23:52 +0200
Re: Help with Query FCB <dave.white19@gmail.com> - 2011-08-20 09:19 -0700
csiph-web