TSQL Помощь с простым запросом - PullRequest
1 голос
/ 16 июня 2010

Я использую SQL-SERVER 2005.

У меня есть две таблицы, как вы можете видеть на диаграмме, CellularUsers и CellularPayments.Мне нужно получить пользователей, с которых нужно взимать плату, когда есть несколько правил:

  1. , если последний CellularPayments.paymentSum userID был 8, затем выберите все userID и userCellularNumbers где CellularPayments.date> getdate ()
  2. если последний CellularPayments.paymentSum для userID был 18, то выберите все userID и userCellularNumbers, где dateadd (дд, 7, CellularPayments.date)> getdate ()

альтернативный текст http://img256.imageshack.us/img256/1946/63468037.png

для просмотра диаграммы нажмите здесь

как мне это сделать прямо сейчас но мне это не кажется правильным

select cu.userID,cu.userCellularNumber from CellularUsers cu
left join CellularPayments cp
on cu.userID=cp.userID
where cu.isPaymentRecurring=1
and isActivated=1
and cp.paymentID in (select max(paymentID) from CellularPayments group by userID)

заранее спасибо

1 Ответ

1 голос
/ 16 июня 2010

Если я правильно следую вашей логике, добавьте следующий оператор AND к предложению where:

and dateadd( dd
            ,case cp.PaymentSum
               when 8 then 0
               when 18 then 7
               else [AppropriateDefaultValue]
             end
            ,CellularPayments.date) > getdate()

(я бы тоже сделал это внутренним соединением.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...