Получить дополнительные столбцы при группировке - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь добавить еще один столбец в этот поиск, но он добавляет несколько строк при добавлении следующего столбца

Приведенный ниже код возвращает правильную информацию, но мне нужен столбец с именем category без возврата нескольких строк для каждой шины

SELECT workorders.bus, MAX(workorders.service_date) AS ServiceDate
  , MAX (workorders.mileage) AS Mileage
FROM dbo.WorkOrders 
WHERE (workorders.type = 'PMI') 
GROUP BY workorders.bus
order by workorders.bus

bus ServiceDate Mileage
108 2017-05-14  347480
120 2014-07-11  167900
545 2017-03-13  280659
546 2017-03-13  293888
547 2015-05-12  249017
558 2019-06-24  376046

Я ожидаю увидеть категорию рядом с каждым из этих миль, например, А при первом возвращении из автобуса 108. Но когда я добавляю категорию в поиск, я получаю пять шин 108.

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Добавьте категорию в группу и используйте row_number для добавления идентификатора строки в порядке.

   /****** Script for SelectTopNRows command from SSMS  ******/
select 
    *
from
(
    SELECT [bus]
          ,[Category]
          ,max([Servicedate]) as [Servicedate]
          ,max([mileage]) as [mileage]
            , ROW_NUMBER() OVER (PARTITION BY [bus] ORDER BY max([mileage]) desc) rowID
      FROM [tbltest]
  group by bus, category
) tmp
where tmp.rowID = 1
0 голосов
/ 03 июля 2019

Просто используйте функцию агрегирования:

SELECT wo.bus,  MAX(wo.service_date) AS ServiceDate, MAX(wo.mileage) AS Mileage,
       MAX(wo.category) as category
FROM dbo.WorkOrders wo
WHERE wo.type = 'PMI'
GROUP BY wo.bus
ORDER BY wo.bus
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...