2014-02-11 4 views
1

Я выбираю две записи между двумя датами, при этом я испытываю повторную запись, я использовал слово, отличное от него, но его не работает: так выглядит мой запрос:Как выбрать различные значения между двумя датами

У меня также есть уникальный идентификатор в моей базе данных, поэтому мы можем использовать его для извлечения уникальной записи, но как бы написать это?

В настоящее время я получаю повторяющиеся записи

ID FName sName Date 
1 John JAck 2013-9-07 
2 Linda Bush 2013-10-07 
3 Linda Bush 2013-11-07 
This is what i want 
ID FName sName 
1 John JAck 2013-9-07 
2 Linda Bush 2013-11-07 

Это записи между 2013-9-07 до 2013-11-07. между этими записями я не хочу повторяться любое ID

+0

Вы хранилище datetime как строка в базе данных? – Damith

+0

Я храню его как Datetime - но здесь я конвертирую, так что должно быть хорошо – user911

+0

Что такое переменная 'd'? Он нигде не инициализируется. – fejesjoco

ответ

1

[мигрировали из комментариев]

Вы должны использовать select distinct id, fname, sname from table. Если вам не нужна дата, тогда это будет работать, никаких повторений.

+0

Это не работает, если вы не выберете только имя и имя, так как есть разные поля ИД и Даты. См. Ниже @ user911 –

0

Попробуйте

Select Max(ID),FName,sName,Max(Date) 
FROM Table1 
Where Date > 'SomeDate' And Date < 'SomeDate' 
Group By FName,sName 
+0

, используя это, пользователь не сможет выбрать две даты? – user911

+0

Он даст результат, как вы ожидали, вы можете использовать Между ключевым словом для выбора между двумя датами –

+0

Я пробовал в своей базе данных, и он работает, но когда он приходит в C#, он останавливается внутри while (reader.Read()), я получаю сообщение об ошибке indexoutofrangeexception был необработанным кодом пользователя на идентификаторе. Нужно ли мне указывать ID? так выглядит мой запрос 'Select Max (ID), FName, sName, Max (Date) FROM Table1 Where Date> @ Date1 And Date <@ Date2 Group By FName, sName' – user911

0

Не попробовать использовать BETWEEN

SELECT DISTINCT ID,FName,sName,Date 
FROM Table1 
WHERE Date BETWEEN 'Date1' And 'Date2' 

UPDATE

Из-за двух разных дат и ID в вопросе выше вы должны использовать группировку. Это дает вам:

SELECT MIN(ID),FName,sName, MIN(Date) 
FROM Table1 
WHERE Date BETWEEN 'Date1' And 'Date2' 
ORDER BY ID 
GROUP BY FName,sName 

DISTINCT не будет работать, поскольку есть различные идентификаторы и даты для каждой записи.

Вышеприведенный запрос даст вам первый идентификатор. Вы можете изменить ORDER BY на дату, чтобы получить самое раннее. Или вы хотите использовать последнее, затем используйте MAX вместо MIN и используйте ORDER BY с DESC.

+0

Я все еще получаю повторяющиеся записи Fname и Sname – user911

+0

Что произойдет, если вы добавите DISTINCT, как указано выше? –

+0

Игнорируйте команду DISTINCT и просмотрите ОБНОВЛЕНИЕ выше. –

Смежные вопросы