SQL Server CE 3.5 «выберите отдельную» проблему - PullRequest
2 голосов
/ 26 февраля 2012

У меня проблема с запросом с использованием SQL Server CE 3.5 и c #

Вот как выглядит моя таблица:

start      | end        | matricul
-----------+------------+---------
29/01/2012 | 29/01/2013 | 22453
29/01/2012 | 29/01/2013 | 22454
29/01/2012 | 29/01/2013 | 22455
29/01/2011 | 29/01/2012 | 22458
29/02/2012 | 29/02/2013 | 22440

Вот что я хотел бы получить:

start      | end        | matricul
-----------+------------+---------
29/01/2012 | 29/01/2013 | 22453
29/01/2011 | 29/01/2012 | 22458
29/02/2012 | 29/02/2013 | 22440

Когда я выполняю этот запрос:

string query = "SELECT DISTINCT(start) FROM mytable "

Я получаю тот же результат (такой же, как в первой таблице).

Я пытаюсь использовать группу при закрытиикак это:

string query = "SELECT COUNT(start),end,matricul FROM mytable GROUP BY start";

но это дало мне ошибку.

Пожалуйста, любая помощь будет оценена

Ответы [ 2 ]

3 голосов
/ 26 февраля 2012

Если вы группируете только по «start», вы не можете вернуть «end» и «matricul» - так как для каждого может быть несколько строк.Вы можете вернуть аггрегатов из них (например, мин. Или макс.) - однако, я ожидаю, что вам просто нужно:

select distinct start, end, matricul
from mytable

. Вы также можете написать это как группу:*

select start, end, matricul
from mytable
group by start, end, matricul

Или, может быть:

select start, end, sum(matricul)
from mytable
group by start, end

В зависимости от того, что "matricul" означает: p

2 голосов
/ 27 февраля 2012

Чтобы получить набор результатов с 3 строками, которые вы упомянули в своем вопросе, вам, вероятно, понадобится что-то вроде этого:

select
    start, [end], min(matricul)
from
    tablename
group by
    start, [end]

Обратите внимание на квадратные скобки: end является зарезервированным словом и можетвызывают проблемы на некоторых СУБД.

...