我有一張表,其中包含商店和屬性的列表,它們以周爲單位指示商店的年齡和商店的訂單量。第二張表格列出了基於年齡和數量的UPLH目標。我想退回第一張表中列出的商店以及相關的UPLH目標。以下正常工作:計算字段給函數錯誤提供無效參數的子查詢
SELECT store, weeksOpen, totalItems,
(
SELECT max(UPLH)
FROM uplhGoals as b
WHERE b.weeks <= a.weeksOpen AND 17000 between b.vMIn and b.vmax
) as UPLHGoal
FROM weekSpecificUPLH as
a
但此查詢,這是從第一臺現場更換TOTALITEMS的硬編碼值,給我的「無效參數的功能」的錯誤。
SELECT store, weeksOpen, totalItems,
(
SELECT max(UPLH)
FROM uplhGoals as b
WHERE b.weeks <= a.weeksOpen AND a.totalItems between b.vMIn and b.vmax
) as UPLHGoal
FROM weekSpecificUPLH as a
任何想法,爲什麼這不工作?還有其他選擇嗎?我可以很容易地使用dmax()並遍歷每條記錄來創建一個新表,但這似乎是查詢應該能夠產生的東西的漫長過程。
SQLFiddle:http://sqlfiddle.com/#!9/e123a8/1 看來,SQLFiddle輸出(下)是我所尋找的,即使Access給出的錯誤。
| store | weeksOpen | totalItems | UPLHGoal |
|-------|-----------|------------|----------|
| 1 | 15 | 13000 | 30 |
| 2 | 37 | 4000 | 20 |
| 3 | 60 | 10000 | 30 |
編輯:
weekSpecificUPLH是查詢不是表。如果我在Access中創建一個新的測試表,並使用相同的字段,它將起作用。這會告訴我,它與[totalItems]字段實際上是計算結果有關。所以相反,我用[a.IPO * a.OPW]替換該字段。同樣的錯誤。它好像不把它當作正確的數字類型。
我用盡:
SELECT store, weeksOpen, (opw * ipo) as totalItems,
(
SELECT max(UPLH)
FROM uplhGoals as b
WHERE 17000 between b.vMIn and b.vmax AND b.weeks <= a.weeksOpen
) as UPLHGoal
FROM weekSpecificUPLH as
a
其中工程。但用'totalitems'和相同的錯誤替換'17000'。我什至嘗試使用val(totalItems)無濟於事。
不拉UPLHGoal查詢錯誤消息說哪個函數獲取無效參數? – Barmar
我看到的唯一函數是'MAX()',並且在兩個版本中都有相同的參數。 – Barmar
您可以使用示例數據來展示問題的sqlfiddle嗎? – Barmar