2015-02-06 2 views
0

У меня есть запрос:Не можете избавиться от дублей

SELECT t.nCitiesId 
    ,t.tmDate 
    ,t.strShortWeekdayName 
    ,t.nIsHoliday 
FROM #temp AS t 
WHERE 1 = 1 
AND  t.nCitiesId = 104 
AND  t.tmDate = '2014-06-08' 
GROUP BY t.tmDate, t.nCitiesId, t.strShortWeekdayName, t.nIsHoliday 

Это порождает следующий результат:

nCitiesId   tmDate    strShortWeekdayName nIsHoliday 
104  2014-06-08 00:00:00.000   SUN    0 
104  2014-06-08 00:00:00.000   SUN    1 

Моя проблема, когда nCitiesId и tmDate равно, я wan't один с nIsHoliday = 0 ушел.

Как я могу сделать это плавно?

+0

что, если у вас также есть третий ряд с 'nIsHoliday' = 0, вы хотите конечное значение столбца как 0 или 1? – Deepshikha

+0

Пока tmDate и nCitiesId равны, мне нужна только одна строка. Всегда. С nIsHoliday = 1 – MrProgram

ответ

1

Выберите t.nIsHoliday с наивысшим значением:

SELECT t.nCitiesId 
     ,t.tmDate 
     ,t.strShortWeekdayName 
     ,max(t.nIsHoliday) 
FROM #temp AS t 
WHERE t.nCitiesId = 104 
AND t.tmDate = '2014-06-08' 
GROUP BY t.nCitiesId, t.tmDate, t.strShortWeekdayName 
1

Попробуйте использовать имеющий пункт:

SELECT t.nCitiesId 
    ,t.tmDate 
    ,t.strShortWeekdayName 
    ,t.nIsHoliday 
FROM #temp AS t 
WHERE 1 = 1 
AND  t.nCitiesId = 104 
AND  t.tmDate = '2014-06-08' 
GROUP BY t.tmDate, t.nCitiesId, t.strShortWeekdayName, t.nIsHoliday 
having max(t.nIsHoliday) 
Смежные вопросы