關於SQL Server 2005中,我該如何合併這個語句如果選擇返回null當前時間 -只有在SQL Server合併字段獲取當前時間
select top 1 OrderDate as OldestOrderDate
from ordersview
ORDER BY OldestOrderDate
訂購日期爲類型datettime的。
關於SQL Server 2005中,我該如何合併這個語句如果選擇返回null當前時間 -只有在SQL Server合併字段獲取當前時間
select top 1 OrderDate as OldestOrderDate
from ordersview
ORDER BY OldestOrderDate
訂購日期爲類型datettime的。
你這是怎麼coalesce this statement
:
coalesce(
(select top 1 OrderDate as OldestOrderDate from ordersview),
getDate());
如果你只希望時間部分:
coalesce(
(select top 1 OrderDate as OldestOrderDate from ordersview),
convert(varchar(10), getdate(), 8));
這裏是一個example
但如果我想這兩個轉換OldestOrderDate並只需要時間藥水,那麼我該怎麼做? - 巴茲
在這種情況下,請嘗試this。
但是如果我想將OldestOrderDate和getdate都轉換成時間藥水,那我該怎麼做? – Baz 2012-03-05 13:58:29
嘗試以下操作:
select top 1 coalesce(OrderDate, getdate()) as OldestOrderDate from ordersview
這將返回訂購日期,如果它不爲空,否則將返回當前日期。
Coalesce從其參數中返回第一個非空值。
如果表是空的,你什麼也得不到 – 2012-03-04 21:56:21
SELECT OldestOrderDate = MAX(COALESCE(OrderDate, GETDATE()))
FROM (SELECT OrderDate = MAX(OrderDate) FROM dbo.ordersview UNION ALL SELECT NULL);
啊,當我遇到這個問題時,我沿着Mosty Mostacho的回答去了,但轉換爲使用MAX() - 事後很明顯! - 要好得多。但說實話,我並沒有得到那麼複雜的東西。爲什麼派生表?爲什麼'聯盟'? 'COALESCE(MAX(OrderDate),GETDATE())'應該工作得很好。 – 2013-10-17 02:23:37
@AndriyM你希望我記得去年三月我在抽菸嗎? – 2013-10-17 12:49:35
爲什麼沒有'ORDER BY'的'top 1'?請不要告訴我你的觀點是'選擇百分之百......命令......'? – 2012-03-04 22:25:42
PS如果你的視圖確實有'TOP 100 PERCENT ... ORDER BY ...'請刪除它並閱讀(我剛剛在幾天前發佈了關於這件事的博客):http://www2.sqlblog。 com/blogs/aaron_bertrand/archive/2012/02/28/why-people-think-some-sql-server-2000-behaviors-live-on-12-years-later.aspx – 2012-03-04 22:39:16
別擔心,我是意識到視圖不是有序的!謝謝。 – Baz 2012-03-05 13:59:37