2016-12-02 70 views
0

我想建立一個經常性的if else或FOR循環條件塊按以下條件復發的病症塊SQL

我有一個數據表

我希望有一個「創建日期」一欄實現以下條件

0-5 days from created date 
print text1 
6-10 from created date 
print text2 
11-15 
print text3 
16-20 
print text4 
21-25 
print text1 
26-30 
print text2 

等..
所以在20天之後,每5天后第一次獲得的文本再次被打印出來並且像那樣的4組文本。

+2

指定的樣品表數據和預期的結果 – Mansoor

+0

那麼,什麼是結束日期?如果是1-30,則可以在選擇查詢中使用case語句。 –

+0

向我們顯示代碼。標記您正在使用的dbms。 – jarlh

回答

1

在SQL Server,你可以使用CASE WHEN

SELECT name, total, 
CASE 
WHEN datediff(day, createdDate, getdate()) <5 THEN 'Almost Due' 
WHEN datediff(day, createdDate, getdate()) BETWEEN 6 AND 10 THEN 'Due Now' 
    ... 
WHEN datediff(day, createdDate, getdate()) >20 THEN 'PAY NOW!!' 
END as discount from invoice 

或你複雜的問題

SELECT name, total, 
CASE (datediff(day, createdDate, getdate()) % 25) 
WHEN <5 THEN 'Almost Due' 
WHEN BETWEEN 6 AND 10 THEN 'Due Now' 
    ... 
WHEN >20 THEN 'PAY NOW!!' 
END as discount from invoice 
0

使用整數除法和模數的組合,確切的運營取決於你的方言SQL。以下是T-SQL,MySQL的將使用DIV,而不是\

CASE (DATEDIFF(DAY, CreatedDate, GetDate()) \ 5) % 4 
    WHEN 0 THEN 'text1' 
    WHEN 1 THEN 'text2' 
    WHEN 2 THEN 'text3' 
    WHEN 3 THEN 'text4' END