我碰到過一個我不確定如何解決的問題。在我的存儲過程中,我使用DATEDIFF()函數爲日期差異返回一個int。在我的邏輯中,我還從DATEDIFF()的返回值中減去了一個值,它給了我一個負值。這是設計的,因爲這個邏輯是用來計算費率的。在t-sql的情況下選擇別名
我的問題是我使用的case語句,但我不能選擇列,因爲它使用的是別名。我的目標是做的是寫到哪,如果該值爲負我希望它顯示爲0。
見下面我的代碼的詳細信息,一些額外的邏輯:
DATEDIFF(d, vso.pod_ata, ISNULL(cncr.cntr_date3, GETUTCDATE())) - 14 AS dem_days, -- Date difference to work out Demurrage days
DATEDIFF(d, cncr.dc_ata, ISNULL(cncr.empty_return_dt, GETUTCDATE())) - 21 AS det_days,
CASE WHEN dem_days <= 0 THEN 0 END AS 'test1',
CASE WHEN det_days <= 0 THEN 0 END AS 'test2',
錯誤消息:
列名'dem_days'無效。 列名'det_days'無效。
解決此問題的最佳解決方案是什麼?
完美的工作。我添加了一個else條件,如果它不小於零,它就不會評估它的值。這將向我顯示零或大於零的數字,但同時保持我的費率邏輯完好無損。謝謝你,先生!! – 2012-03-16 10:21:24