[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 676
  • Last Modified:

using ntile for grouping

I need to retrieve only one row from the dataset above since it is the same address location except for device_location, service_apt. I don't care which device_location i get., I just need one record.

I tried to get this using NTILE but not luck. I don't want to use any temp tables or any kind of data massaging and I want to get this in one sql statement.

SELECT device_location,service_house_number, service_street
    ,NTILE(1) OVER(PARTITION BY service_house_number, service_street ORDER BY service_house_number ) AS 'Address'
from DeviceLocationCURRENT
 

device_location                service_house_number service_street    service_apt
------------------------------ -------------------- -----------------------------
1543785                        1550                 IRON POINT RD     3324
2390370                        1550                 IRON POINT RD     2821
1545917                        1550                 IRON POINT RD     322
1543769                        1550                 IRON POINT RD     2312
1546597                        1550                 IRON POINT RD     611
1545483                        1550                 IRON POINT RD     2111
2390536                        1550                 IRON POINT RD     2622
1543770                        1550                 IRON POINT RD     2313
1543762                        1550                 IRON POINT RD     2213
1544113                        1550                 IRON POINT RD     1711
1546635                        1550                 IRON POINT RD     1013
1546668                        1550                 IRON POINT RD     412
1546618                        1550                 IRON POINT RD     824
2391609                        1550                 IRON POINT RD     1322
1546677                        1550                 IRON POINT RD     511
1543236                        1550                 IRON POINT RD     111

Open in new window

0
LegalZoomer
Asked:
LegalZoomer
  • 2
1 Solution
 
imitchieCommented:
SELECT device_location,service_house_number, service_street
    ,row_number() OVER(PARTITION BY service_house_number, service_street ORDER BY service_house_number ) AS Address
from DeviceLocationCURRENT
where Address = 1
0
 
imitchieCommented:
missed a subselect

SELECT * FROM (
SELECT device_location,service_house_number, service_street
    ,row_number() OVER(PARTITION BY service_house_number, service_street ORDER BY service_house_number ) AS Address
from DeviceLocationCURRENT) X
where Address = 1
0
 
yuchingCommented:
Group by also can do the trick.

SELECT service_house_number, service_street,
      MAX(service_apt) AS service_apt, MAX(device_location) AS device_location
FROM DeviceLocationCURRENT
GROUP BY service_house_number, service_street
0
 
YveauCommented:
... how about:

Hope this helps ...

SELECT  Top 1 device_location,service_house_number, service_street
from    DeviceLocationCURRENT
 
--

Open in new window

0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now