2014-11-20 8 views
0

Как добавить нижнюю строку в мое заявление?SQl if statement in where where

SELECT 
AgentID, 
PaymentAmount 
FROM Table A 

WHERE 
DATEOFPAYMENT 

GROUP BY 
CollectorNumber 

ORDER BY 
CollectorNumber, 
LastName, 
DateofPayment, 
PaymentAmount 

если DATEOFPAYMENT = вчера, то PaymentAmount еще 0 как 'предыдущий день'

или

если DATEOFPAYMENT = current_Month тогда PaymentAmount еще 0 как 'MTD'

или

если DATEOFPAYMENT = CURRENT_YEAR то PaymentAmount еще 0 как «YTD

+0

Я не понимаю, где вы хотели бы их поместить. Вы можете использовать 'CASE' вместо' IF', но как вы его используете, зависит от того, что вы делаете. –

+1

Посмотрите на инструкцию CASE. Я думаю, что это поможет вам. http://msdn.microsoft.com/en-us/library/ms181765.aspx –

+1

Замените 'DATEOFPAYMENT' в' 'WHERE' оператором' CASE'. –

ответ

0

Мы можем изучить CASE syntax from here , it would be, roughly (I am not acquainted with MySQL date formats , so please look that up)

SELECT AgentID, PaymentAmount FROM Table A 

WHERE CASE DATEOFPAYMENT 
WHEN subdate(currentDate, 1) THEN PaymentAmount 
WHEN month() THEN PaymentAmount 
WHEN year() THEN PaymentAmount 
ELSE 0 
END 

GROUP BY CollectorNumber 

ORDER BY CollectorNumber, LastName, DateofPayment, 
PaymentAmount 

Это почти сделано псевдо-код, пожалуйста, исправить синтаксис. Но дело так выглядит.

+1

Это не сработает. –

+0

@GoatCO - Я знаю, просто направляя его вдоль – Coffee

+1

'ELSE' может произойти, но один раз он должен появиться после последнего' WHEN..THEN'. 'АС' также там не принадлежит. –