我們爲客戶提供服務,每個客戶都有90天的授權 我想創建一個函數,將整個月的時間計爲15天。例如,假設客戶在10/17/2017獲得授權。它意味着它是不超過15天的十月,這樣的授權不會爲月數,但它有計數十一月,十二月和一月2018函數來計算X個金額作爲一個整月的天數
;WITH CTE AS (
select
d.ClientId,
LOC
datediff(day, l.DecisionOn, d.duedate) 'Days',
l.DecisionOn,
d.duedate
from code d
join codeloc l on d.curdocversionid = l.docversionid
join codeaccess a on a.docversionid = d.curdocversionid
where codeid = 69999
and aoca in ('68','69','70','71','72','74')
),
T AS (
SELECT ClientId, LOC, COUNT(*) CNT FROM CTE
WHERE [Days] > 15
AND AuthorizedDecisionOn > DATEADD(MONTH, (CASE WHEN DAY(GETDATE()) > 15 THEN 1 ELSE 0 END) , CAST(GETDATE() as date))
AND duedate < DATEADD(MONTH,3 + (CASE WHEN DAY(GETDATE()) > 15 THEN 1 ELSE 0 END) , CAST(GETDATE() as date))
GROUP BY ClientId, LOC
)
問題是什麼用您的查詢?你可以從表格中添加一些示例數據嗎? – 2017-10-16 15:47:19
他們希望能夠看到有多少當前客戶端在任何給定時間都被授權,這些客戶端可以用於計算目標 – Chairbedding
使用適當的軟件(MySQL,Oracle,DB2,...)和版本(例如, '的SQL服務器2014'。語法和功能的差異往往會影響答案。請注意,'tsql'縮小了選擇範圍,但不指定數據庫。表格模式,樣本數據和預期結果非常有用。 – HABO