0
我試圖使用SS-2012的IIF報表/日期IIF有條件的起始日期結束日期INT碰撞
我有這個工作正常
SELECT
NULLIF(IIF(a.EndDate is null
, DATEDIFF(MONTH, a.StartDate, getdate()) ,
IIF(a.EndDate is not null
, DATEDIFF(MONTH, a.StartDate, a.EndDate) , '')),'')
AS Months
,NULLIF(IIF(a.EndDate is null
, DATEDIFF(Day, a.StartDate, getdate()) ,
IIF(a.EndDate is not null
, DATEDIFF(Day, a.StartDate, a.EndDate) , '')),'')
AS DateDays
FROM
TableDates a
我碰到的問題是,如果開始日期和結束日期都在同一天(我想它默認爲1個月,30天或31天的任何一個月是)
我gettiing
int is incompatible with date
當嘗試下面
,NULLIF(
IIF ((a.EndDate is null) , DATEDIFF(Day, a.StartDate, getdate()) ,
IIF ((a.StartDate = a.EndDate)
, DATEADD(Day, DATEDIFF(Day, a.StartDate, a.EndDate), a.EndDate),
IIF ((a.EndDate is not null) , DATEDIFF(Day, a.StartDate, a.EndDate),'')
)),'')
這個我怎樣才能默認的日子30-31和月份爲1,如果日期是一樣的嗎?
你究竟在做什麼?現在這只是「這是一堆令人頭痛的代碼,爲什麼它不起作用?」另外,你有沒有考慮二月?閏年應該很有趣。 – 2014-09-03 20:38:44
我正在嘗試使用'IIF'語句沒有幫助。你爲什麼使用它們?爲什麼不是老式的'CASE'表達?這個代碼實際上是用什麼來實現的?哪些數據類型是你的列? – Zane 2014-09-03 20:41:52
錯誤發生的原因是您的'IIF'可以返回'INT'('DATEDIFF(Day,a.StartDate,getdate())')或'DATE'('DATEADD(Day,DATEDIFF(Day,a.StartDate, a.EndDate),a.EndDate)')。您不能在同一列中返回2種不同的數據類型 – Lamak 2014-09-03 20:43:01