Пожалуйста, смотрите DDL ниже:Использование SQL или TSQL
CREATE TABLE Groups
(
GroupID integer not null,
Dataset int,
URN int,
DateAdded datetime
)
INSERT INTO Groups(1,1,100,'2010-01-01')
INSERT INTO Groups(1,1,191,'2011-01-01')
INSERT INTO Groups(1,1,65,'2012-01-01')
INSERT INTO Groups(1,2,121,'2013-01-01')
INSERT INTO Groups(2,1,87,'2010-01-01')
INSERT INTO Groups(2,1,1081,'2011-01-01')
INSERT INTO Groups(2,1,32,'2012-01-01')
INSERT INTO Groups(2,1,16,'2013-01-01')
INSERT INTO Groups(2,2,66,'2013-01-01')
Я пытаюсь вернуть таблицу, как это:
100 191
100 65
87 1081
87 32
87 16
Колонка 1 является идентификатор группы и столбец 2 является URN. Список соответствует критериям:
Получить все записи с набором данных 1 из группы
Всегда отображать самую старую URN (с использованием dateadded) в столбце 1 (где набор данных = 1). В колонке 2 поставить другую URN из группы (где набор данных = 1)
Убедитесь, что все урн (ГДЕ набор данных = 1) из группы появляются один раз в колонке 2 для URN, который отображается в столбце, за исключением 1
Я считаю, что мне нужно делать это программно (используя TSQL), однако я задавался вопросом, есть ли способ сделать это с помощью SQL.
Ваши результаты не соответствуют вашим заявленным требованиям. Исходя из ваших требований, вы должны вернуть только 2 записи (по одной для каждой группы). –
@D Stanley, я отредактировал требования, чтобы попытаться сделать его более ясным. – w0051977
Он по-прежнему не соответствует. Самый старый URN для группы 1 будет 100, а старшим из группы 2 будет 78. Вы показываете все записи _except_ самый старый. –