我想撰寫一個以月數為引數的函式,并執行以下操作:
IF @months = 3 THEN '3 Months'
IF @months = 6 THEN '6 Months'
IF @months = 12 THEN '1 Year'
IF @months = 18 THEN '1.5 Year'
IF @months = 24 THEN '2 Year'
.... and so on
我可以使用 case 陳述句對所有這些進行硬編碼,但我想知道是否有一種動態的方式來做這件事。謝謝!
uj5u.com熱心網友回復:
以下代碼段顯示了計算以及它對 1 到 36 之間的月份值產生的結果
declare @month INT = 0
while @month < 36 begin
set @month = @month 1
-- This is the actual "function"
select case when @month < 12 then concat (@month, ' month(s)')
else concat (cast (@month/12.0 as decimal (6,2)), ' year(s)')
end
end
uj5u.com熱心網友回復:
請試試這個...
SELECT IIF(@month<12,CONCAT(@Month,' Months'),CONCAT(CONVERT(DECIMAL(9,1),@Month/12.0),' Year'));
uj5u.com熱心網友回復:
試試這個:
DECLARE @month INT=18
SELECT CASE WHEN t.divided >=1 THEN CONCAT(t.divided,' Year') ELSE CONCAT(CAST(t.divided AS INT),' Month') END
FROM (
SELECT CAST(CASE WHEN @month<12 THEN @month ELSE @month/12.0 END AS DECIMAL(4,1)) divided
) t
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/466136.html
