Помогите с этим JET Sql Query - PullRequest
0 голосов
/ 17 июня 2010

Мне нужна помощь, чтобы выполнить этот запрос.

например у меня есть эти поля:

  • idInvoice
  • дата
  • сумма

В зависимости от даты Мне нужно умножить поле " сумма " для числа х или другого.

Например, если date меньше 01.01.2010, умножить на 20. Но если оно больше или равно умножению на 35

Select idInvoice, date, amount, amount * varNumber from invoices

Ответы [ 3 ]

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

Предполагая, что ваше поле даты не допускает пустых значений, вы должны иметь возможность использовать выражение IIf для своих расчетов.

SELECT
    idInvoice,
    [date],
    amount,
    IIf([date] < #2010/01/01#, amount * 20, amount * 30) AS extended_amount
FROM invoices;

Обратите внимание, что я заключил имя поля даты в квадратные скобки, потому что дата является зарезервированным словом в Access. Квадратные скобки указывают ядру базы данных, что вам нужно поле с именем «date» вместо функции Date ().

Также поля даты доступа включают компонент времени. Таким образом, этот запрос будет умножен на 20 для любых значений ранее полуночи в начале этого года. Это означает, что для 01.01.2010 в 1:00 AM сумма будет умножена на 30. Если это не то, что вы хотите, измените выражение IIf.

И если в вашем поле [date] разрешены значения Null, посмотрите справку Access для функции Nz ().

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

или

SELECT 
    idInvoice, 
    [date], 
    amount, 
    amount *IIf([date] < #2010/01/01#, 20, 30) AS extended_amount 
FROM invoices; 
0 голосов
/ 17 июня 2010
Select idInvoice, date, amount, 
amount * case when date<'20100101' then 20 else 35 end as amount from invoices 
...