2016-08-11 16 views
0

我知道MSSQL沒有LEAST函數,並且CASE提供了一個合理的替代方法,但是,由於某些原因,我正在努力使其工作。在MSSQL中應用一個最大值計算的上限 - 類似於Least()

當前的代碼:

SELECT CAST(CAST(@QueryStartDate AS DATE) AS DATETIME) + CAST(tt.Time as datetime) as [Time], 
    COALESCE(td.[Max Time],0) AS [Max Time] 

,我試圖改變這樣的:

SELECT CAST(CAST(@QueryStartDate AS DATE) AS DATETIME) + CAST(tt.Time as datetime) as [Time], 
    CASE [Max Time] 
     WHEN td.[Max Time] > 9.00 
     THEN 9.00 ELSE COALESCE(td.[Max Time],0) 
    END 

,但似乎無法得到它的工作!如果任何人可以讓我知道我要去哪裏錯了,將不勝感激。謝謝

+0

你能解釋你想實現的邏輯嗎?它是(僞代碼)如果'最大時間'> 9然後9如果'最大時間'是NULL然後0其他0'最大時間'? – NickyvV

+0

...,CASE WHEN td。[Max Time]> 9.00 THEN 9.00 ELSE COALESCE(td。[Max Time],0)END作爲TheMaxTime,... – Cato

+0

謝謝安德魯 - 它解決了它! @Nicky是的,這是邏輯 – MJM

回答

0
select cast(null as float) as [Max Time] into #tmp 
insert into #tmp select 3.0 
insert into #tmp select 12.0 

select * from #tmp 

select case 
    when coalesce([max time], 0.0) < 9.0 then 9.0 
    else [Max Time] 
end 
from #tmp 
+0

謝謝克里斯 - 這也是。感謝大家的幫助 – MJM