У меня есть база данных SQL Server 2008, где я хотел бы иметь возможность выполнять следующие действия для одной таблицы:
В таблице есть несколько столбцов, которые должны быть уникальными на основе комбинации двух столбцов.Мы назовем их [ID1] и [ID2], затем есть ключ, который мы назовем [index], и значение, которое может быть продублировано, с именем [ID3] и значение datetime, называемое [start].
Итак, вот дилемма: в рамках таблицы должно быть только одно увеличивающееся значение [index] для каждой комбинации [ID1] и [ID2], три из которых образуют естественный PK из клиентской БДэто хранится в одной консолидированной серверной базе данных.ID3 указывает значение, которое использовалось для определения того, когда строка была сохранена в клиентской БД, поэтому на сервере могут быть дубликаты
[ID1] [ID2] [index] [ID3] [start] [other1] [other2]
1 1 1 1 01/01/2000 01:00:00 5 6
1 1 2 2 01/01/2000 01:00:01 4 2
1 1 3 3 01/01/2000 01:00:02 5 2
1 1 4 3 01/01/2000 01:00:03 5 2
1 1 5 4 01/01/2000 01:00:04 4 6
Мне нужен запрос, который будет возвращать уникальные строкикомбинации столбцов [ID3] и [other1] & [other2], уникальные для ключа [ID1], [ID2], с тем, что я хотел бы first [start], который соответствует этим критериям, по существуигнорируя дальнейшие вхождения этого же отдельного предложения.
Из вышеприведенной таблицы будет возвращено…
[ID1] [ID2] [index] [ID3] [start] [other1] [other2]
1 1 1 1 01/01/2000 01:00:00 5 6
1 1 2 2 01/01/2000 01:00:01 4 2
1 1 3 3 01/01/2000 01:00:02 5 2
1 1 5 4 01/01/2000 01:00:04 4 6
Вторая строка с [ID3] значения 3 будет игнорироваться, как если былюбой другой, у которого были дубликаты [ID3]
. Кажется, я не могу понять, что это first значение каждой отдельной комбинации, потому что отличное не позволяет мне выбрать значениедругие столбцы, для группировки по которым потребуется некоторая статистическая функция.