Извинения за титул, я не уверен, как выразить свою проблему ... У меня есть таблица, которая выглядит примерно так:эффективно выбрать «суб» из максимумы SQL таблицы
A | B
--------------
01 | 1
01A | 1
01B | 1
01C | 1
02 | 1
03 | 1
03 | 2
03A | 1
03B | 1
Иногда колонок А является квалифицируется письмом (##A,##B
), иногда это не (##
). Мне понадобится
SELECT A,B from Table
если суффиксов не было. Однако с суффиксом мне нужно выбрать максимальное значение A для каждого B. (Это было сформулировано плохо). Я хотел бы ожидать следующие результаты для приведенных выше таблиц:
A | B
--------------
01C | 1
02 | 1
03 | 2
03B | 1
Прямо сейчас, я использую подзапрос и мой запрос:
SELECT A,B FROM Table t1
WHERE t1.A = (SELECT MAX(t2.A) FROM Table t2WHERE LEFT(t1.A,2) = LEFT(t2.A,2)
Это невероятно неэффективно, однако, и мой стол довольно большие, поэтому запрос слишком долго для запуска. Есть ли способ лучше?
Спасибо!
какая система баз данных? –
SQL Server (2005) – nosirrahcd
Не будет эффективного способа выполнить строковый поиск для последней части строки, а затем выполнить некоторую логику на основе этого. SQL не предназначен для таких функций. – JNK