Получить все данные, показать только соответствующие данные из возврата - PullRequest
0 голосов
/ 21 мая 2011

Мне было поручено изменить чужой код без переписывания проекта.У меня есть SQL-оператор, который получает все данные из таблицы клиентов.Возврат:

Inum - which can have many of the same entries.
Istep - Which is unique but bound to above.
Istage - which is unique and bound to above.

Это выглядит примерно так:

10010 - 100 - 999
10010 - 101 - 888
10010 - 102 - 777
10018 - 100 - 999
10018 - 130 - 555
10026 - 300 - 333

Я хочу просто получить первый Inum каждого сета, чтобы я получил:

10010 - 100 - 999
10018 - 100 - 999
10026 - 300 - 333

Я бы тогда удалил последнюю часть - Istep и позволил бы назначить ее в сценарии, когда изменение индекса происходит во всем (VB.NET). Мне нужно продолжать получать ВСЕ данные, поскольку они упакованы в переменную.страница и используется повторно на основе ее текущего содержания снова и снова.Мне может понадобиться сделать это в VB, не уверен.

Добавление (на основе первого ответа): @eaolson - Спасибо за ответ.Грубые опечатки в стороне ... Я должен был быть яснее.Istep уникален для того места, где мы находимся в потоке, потому что мы можем быть только одним местом за раз (Inum).Но они все в БД и по тому, как его тянут, все возвращаются.То же самое верно для Istage.Это уникально для Шага, в котором мы находимся, но все этапы и шаги до текущей точки вытягиваются.Там нет ни строк, ни уникальных идентификаторов, которые я могу найти.Таким образом, они выполнили большинство всех таблиц, и внести некоторые изменения сложно.То, что я хочу, это один Inum.Таким образом, вызов получает первый Inum 10010, затем игнорирует остальные, пока не получит chage 10018, затем скиппсит остальные 10018 до изменения 10026, пропустит остальные до следующего 10023 и т. Д. Я все еще нуждаюсь во ВСЕХ данных *, пока он упаковываетэто в переменную, которую нужно вытащить оттуда вниз по странице.Я в тупике.Я думал, чтобы вытащить его в сетку данных (.NET) и использовать его для остальных вызовов.Но я бы предпочел сделать это в SQL, если это возможно, так как я знаю, что буду нуждаться в этом снова и снова из-за способа, которым это было построено.Спасибо.

1 Ответ

1 голос
/ 22 мая 2011

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

SELECT t1.inum, t1.istep, t1.istage
  FROM mytable t1
 INNER JOIN (
    SELECT inum, MIN(istep) as min_istep
      FROM mytable
     GROUP BY inum ) t2 ON t2.inum = t1.inum AND t2.min_istep = t1.istep

Вы также говорите, что istep и istage являются "уникальными", но в вашем примере они имеют повторяющиеся значения. Я предположил, что (inum, istep) - ваш первичный ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...