2011-10-12 117 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