select isnull(min(date_tested),'01-01-2010') from test_date where date_tested>=@startdate and enddate<=@enddate
我有时得到这个输出 -
datetested
__________
我想要 -
datetested
01-01-2010
所以这不起作用...我的意思是在日期不存在的情况下它返回空白..我希望在它返回时返回一个默认值我猜空白....因为我猜date_tested不是null否则它将具有asigned的值。如果它为null,我可以为它指定默认值吗?
答案 0 :(得分:0)
请改为尝试:
从test_date组中选择min(isnull(date_tested,'01 -01-2010'))by date_tested
在聚合中使用isnull和case语句可以获得很多权力
答案 1 :(得分:0)
试试这个
select coalesce(date_tested,'01-01-2010') from test_date group by date_tested
答案 2 :(得分:0)
为什么要按聚合函数中使用的列进行分组?如果有{X}值满足WHERE
中的条件,则会获得X行。但如果它真的是你想要的,你可以使用
SELECT
ISNULL((SELECT MIN(date_tested)
FROM test_date
WHERE date_tested>=@startdate and enddate<=@enddate
group by date_tested),'01-01-2010') as [datetested];
答案 3 :(得分:0)
好吧,我不明白你是否想要MIN date_tested,或者你想要date_tested的所有可能值,因为你在date_tested上使用MIN而你是GROUPING BY date_tested。如果您想要MIN值,那么您可以执行以下操作:
SELECT MIN(ISNULL(date_tested,'01-01-2010'))
FROM test_date
WHERE date_tested>=@startdate and enddate<=@enddate
你必须要小心,因为如果它为null,你要为date_tested赋值。如果你想要date_tested的所有可能值,那么你可以这样做:
SELECT ISNULL(date_tested,'01-01-2010')
FROM test_date
WHERE date_tested>=@startdate and enddate<=@enddate
GROUP BY ISNULL(date_tested,'01-01-2010')
答案 4 :(得分:0)
尝试使用您的开始日期参数作为默认值...
select isnull(min(date_tested),@startdate)
from test_date
where date_tested>=@startdate
and enddate<=@enddate