2010-06-17 95 views
0

我需要幫助來做這個查詢選擇。幫助此JET Sql查詢

,比如我有這些領域:

  • idInvoice
  • 日期

取決於日期我需要乘場的 「」 對於x號碼或其他人。

例如,如果日期小於01/01/2010乘以20。但如果是大或等於乘以35

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

解決:可以做「聯盟」 – aco 2010-06-17 14:58:24

+0

它被認爲是可以接受的回答你自己的問題。如果你已經解決了這個問題,你可以考慮提交你的解決方案作爲答案。 – Eric 2010-06-17 15:16:58

+0

但我如何提交我的解決方案作爲答案?只有我可以編輯標題。 – aco 2010-06-17 15:57:51

回答

-1
Select idInvoice, date, amount, 
amount * case when date<'20100101' then 20 else 35 end as amount from invoices 
+0

我使用.net(jet sql)訪問。如果運行「CASE」顯示語法錯誤 – aco 2010-06-17 15:04:54

+0

Jet/ACE在SQL中沒有CASE語句。 – 2010-06-18 22:11:05

1

假設你的日期字段不允許爲空,你應該能夠使用I如果表達式爲您計算。

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

注意我將方括號中的日期字段名稱括起來,因爲日期是Access中的保留字。方括號表示你想要一個名爲「date」的字段而不是Date()函數的數據庫引擎。

另外訪問日期字段包括一個時間組件。因此,在今年年初之前,這個查詢會比任何值多出20倍。這意味着對於凌晨1點的2010年1月1日,金額將乘以30.如果這不是您想要的,請更改IIf表達式。

如果您的[日期]字段允許爲空,請查看Access對Nz()函數的幫助。

1

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