Проверка SQL для нулевой даты и затем переключение регистра - PullRequest
0 голосов
/ 22 февраля 2012

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

Работает ниже, за исключением случаев, когда значение завершения_ равно нулю.Если оно пустое, я хочу использовать другое поле с именем create_date.

string strSQL = string.Format(@"select * from my_table 

            where user_Id = {0}

            AND [completion_date] between {1} AND {2}

            order by completion_status  desc, [completion_date] asc"
            , userId, dateStart, dateEnd, visibilityIndicator);

Возможно, что-то вроде этого:

string strSQL = string.Format(@"select * from my_table                                                   
where user_Id = {0}


CASE completion_date 
     WHEN is null THEN [completion_date] between {1} AND {2}
     ELSE [created_date] between {1} AND {2}

END 

AND                       
            order by completion_status  desc, [completion_date] asc"
            , userId, dateStart, dateEnd, visibilityIndicator);

Каков наилучший способ проверить это нулевое значение, а затемпереключиться на созданную дату?

Ответы [ 3 ]

3 голосов
/ 22 февраля 2012
where isnull(completetion_date,created_date) between {1} and {2}

должно работать

0 голосов
/ 22 февраля 2012

ANSI SQL-совместимая версия:

SELECT * FROM my_table WHERE user_Id = {0}
AND [completion_date] BETWEEN {1} AND {2}
OR ([completion_date] IS NULL AND [created_date] BETWEEN {1} AND {2})
ORDER BY completion_status DESC, [completion_date] ASC
0 голосов
/ 22 февраля 2012
string strSQL = string.Format(@"select * from my_table 
where user_Id = {0}
AND ISNULL([completion_date],[created_date]) between {1} AND {2}
 order by completion_status  desc, [completion_date] asc"
...