Отдельные строки в таблице в sql - PullRequest
0 голосов
/ 10 июля 2019

У меня есть таблица с несколькими строками с одинаковым идентификатором члена. Мне нужны только отдельные строки на основе 2 уникальных столбцов

Пример: есть 100 различных клиентов, таблица имеет 1000 строк, потому что каждому клиенту назначено несколько городов и сегментов. Мне нужно 100 отдельных строк для этих клиентов в зависимости от уникального сочетания сегмента и города. Для этой комбинации нет особых требований, только первое из таблицы подходит.

Итак, в настоящее время таблица выглядит примерно так:

enter image description here

Надеюсь, это поможет.

Ответы [ 3 ]

1 голос
/ 10 июля 2019

Handy sql-server top(1) with ties Синтаксис для этого

select top(1) with ties t.*
from table_name t
order by row_number() over(partition by memberid order by sales)

Поскольку у вас нет особых требований в отношении того, какую именно строку выбрать, любой столбец будет делать на order by, он также может быть нулевым

select top(1) with ties t.*
from table_name t
order by row_number() over(partition by memberid order by (select null))
1 голос
/ 10 июля 2019

использовать row_number ()

select * from (select *,row_number() over(partition by memberid order by sales) rn
from table_name
) a where a.rn=1
0 голосов
/ 10 июля 2019

Самый простой способ сделать это - использовать синтаксис ROW_NUMBER () OVER (GROUP BY ...).Вам не нужно использовать порядок по, поскольку вам нужна произвольная строка, но только одна, для каждого члена.

Поскольку вам нужны только ожидаемые данные, а не значение Row_Number, убедитесь, что вы детализироваливозвращенные поля, как показано ниже:

SELECT 
    MemberId,
    city,
    segment,
    sales
FROM (
    SELECT *
        ROW_NUMBER() OVER (GROUP BY MemberId) as Seq
    FROM [Status]
    ) src
WHERE Seq = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...