У меня есть база данных элементов, в которой хранится каждый доступный набор заданного элемента в отдельной строке. Просто идти по именам элементов, запись базы данных выглядит следующим образом:Попытка вернуть только один тип каждого элемента из базы данных
10316-00-B
10316-00-M
10316-02-B
10316-03-B
10316-04-B
10316-23-B
10316-88-B
... где «10316» является фактическим элементом, а затем всем после того, что представляет собой определенный тип сорта. Я хотел бы написать запрос, который будет возвращать только одну запись для элемента «10316» (или в зависимости от того), а также информацию, связанную с этим элементом во всех остальных столбцах таблицы, и игнорировать остальные. Поэтому я бы получил запись для элемента «10316-00-B», но ни один из остальных. Этот процесс будет повторяться для всех других элементов, возвращаемых моим запросом.
Я не придирчивый относительно того, какой элемент данной группы возвращается; верхний будет делать. Я просто вижу один список для элементов 10316, 10317, 10318 и далее, вместо каждого элемента и варианта.
Я пробовал DISTINCT влево (columnName, 5), но это не фильтрует записи, как мне нужно. Кто-нибудь знает как это сделать? Я использую Sql Server 2008 R2.
UPDATE: Я пытаюсь реализовать решение, предоставленное @ mo2 - похоже, что это, скорее всего, вернет все данные для данного элемента, что я и хочу. К сожалению, я получаю сообщение об ошибке «Имя столбца не было указано для столбца 1« t », и я не уверен, как исправить это. Моя версия его запроса выглядит следующим образом:
SELECT * FROM (
select left(item, 5), col1, col2, ... , row_number()
over (partition by LEFT(item, 5) order by item) rn
from Table
) t
where rn = 1
FINAL UPDATE: Я пометил ответ от @kbball как решение, но на самом деле кредит должен пойти @ mo2, а также. Ответ от @kbball помог мне понять ответ от @ mo2.
Пытаюсь свое решение, но я не уверен, что это «т», как предполагается, после закрывающей скобки. Я получаю сообщение об ошибке «Имя столбца не указано для столбца 1« t ».» – bmurrell30
«t» - это просто псевдоним для подзапроса, который, как мне кажется, необходим серверу sql. Вы можете просто запустить подзапрос, чтобы понять, как он работает. Не знаете, почему вы получаете ошибку, не видя запроса. – mo2