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

У меня есть столбец в следующем формате:

Time  Value
17:27   2
17:27   3

Я хочу получить отдельные строки на основе одного столбца: Время.Таким образом, мой ожидаемый результат будет один результат.Либо 17:27 3 или 17:27 3.

Distinct

В T-SQL используется несколько разных столбцов вместо одного.Distinct возвращает две строки, так как комбинации времени и значения уникальны (см. Ниже).

select distinct [Time], * from SAPQMDATA

вернет

Time  Value
17:27   2
17:27   3

вместо

Time  Value
17:27   2

Группировка по

Также группировка по не работает

select * from table group by [Time]

В результате:

 Column 'Value' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Вопросы

Как выбрать все уникальные столбцы «Время» без учета других столбцов, предоставленных в запросе выбора?
Как я могу удалить повторяющиеся записи?

1 Ответ

0 голосов
/ 05 июня 2019

Здесь ROW_NUMBER будет вашим лучшим другом. Используя это в качестве образца данных ...

time                 value
-------------------- -----------
17:27                2
17:27                3
11:36                9
15:14                5
15:14                6

.. ниже приведены два решения, с которыми вы можете копировать / вставлять / запускать.

DECLARE @youtable TABLE  ([time] VARCHAR(20), [value] INT);
INSERT  @youtable VALUES ('17:27',2),('17:27',3),('11:36',9),('15:14',5),('15:14',6);

-- The most elegant way solve this
SELECT TOP (1) WITH TIES t.[time], t.[value]
FROM   @youtable AS t
ORDER BY ROW_NUMBER() OVER (PARTITION BY t.[time] ORDER BY (SELECT NULL));

-- A more efficient way solve this
SELECT t.[time], t.[value]
FROM
(
  SELECT t.[time], t.[value], ROW_NUMBER() OVER (PARTITION BY t.[time] ORDER BY (SELECT NULL)) AS RN
  FROM   @youtable AS t
) AS t
WHERE t.RN = 1;

Каждый возвращает:

time                 value
-------------------- -----------
11:36                9
15:14                5
17:27                2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...