2011-10-12 98 views
2

在SQL中我有一个DateField显示当前月份数据。有些日期是NULL,我想以某种方式替换NULL日期,比如fn NOW()日期。有人可以帮助指导我在查询中更新NULLS吗?我使用MS SQL 2008 R2。SQL视图,替换NULL值

SELECT  TOP (100) PERCENT dbo.[001_SubItem_Price].SubItem, { fn NOW() } AS Date, dbo.POTable.Date AS Datefield 
FROM   dbo.[001_SubItem_Price] LEFT OUTER JOIN 
         dbo.POTable ON dbo.[001_SubItem_Price].SubItem = dbo.POTable.Item 
WHERE  (MONTH(dbo.POTable.Date) = MONTH(GETDATE())) OR 
         (MONTH(dbo.POTable.Date) IS NULL) 
GROUP BY dbo.[001_SubItem_Price].SubItem, dbo.POTable.Date 
ORDER BY dbo.[001_SubItem_Price].SubItem 

enter image description here

+0

您正在使用什么味道SQL的? SQL Server,mySql,Oracle? –

回答

3

只需使用:

...COALESCE(Datefield, GETDATE()) as Datefield

-3

只是要一个SQL UPDATE SET其中的DateField IS NULL和值设置为GETDATE()

+0

这是一个视图,所以我们不想'更新' – JNK

+0

另外,我没有倒下你,但我很欣赏“报复”downvote。 – JNK

0

这应该解决您的问题。

http://msdn.microsoft.com/en-us/library/ms184325.aspx

而不是

SELECT dateField... 

使用

SELECT ISNULL(dateField, GETDATE())... 
+0

用GETDATE()改变它,但我只是显示ISNULL函数。 –

+0

我已经删除了我的downvote –

0
select IsNull(yourdate, getdate()) 
3

在SQL服务器,你可以使用isNULL(Column, GetDate())

,或者如果你有万亩使用COALESCE

COALESCE(column1, column2, GETDATE()) as columnName 

这将返回参数列表中的第一个非空项目。

+0

复仇投票,真的吗? –

+0

+1 - COALESCE的好解释 – JNK

+0

有积极反应的行为。 –

0

你可以尝试要么

ISNULL(dbo.POTable.Date, CURRENT_TIMESTAMP) AS Datefield 

ISNULL(dbo.POTable.Date, GETDATE()) AS Datefield