簡體   English   中英

SQL WHERE子句未過濾到標准MS-Access

[英]SQL WHERE Clause not filtering to criteria MS-Access

我寫了一個查詢來收集兩個不同天的余額,找到百分比差異,然后顯示它們。 我在表單中添加了“百分比過濾器”部分,以僅顯示>=所需百分比的值。

運行查詢時,我得到的結果>=給出的百分比。 但是,滿足條件后,結果將擴展到0為止,就像忽略了我的WHERE子句一樣。 我的查詢中沒有發現什么?

正在使用的查詢:

SELECT [x].[ID], [x].[Name], [x].[Day1Date], [x].[Day1Bal], [x].[Day2Date], [x].[Day2Bal], [x].[Difference], IIf(([Day2Bal]>[Day1Bal]),((([Day2Bal]-[Day1Bal])/[Day1Bal])*100),(((([Day2Bal]-[Day1Bal])/[Day1Bal])*-1)*100)) AS PerDiff

FROM qryUnion AS x

WHERE IIf(([Day2Bal]>[Day1Bal]),((([Day2Bal]-[Day1Bal])/[Day1Bal])*100),(((([Day2Bal]-[Day1Bal])/[Day1Bal])*-1)*100)) > [Forms]![Compare]![txtPercent]

ORDER BY IIf(([Day2Bal]>[Day1Bal]),((([Day2Bal]-[Day1Bal])/[Day1Bal])*100),(((([Day2Bal]-[Day1Bal])/[Day1Bal])*-1)*100)) DESC

我已經無數次地編輯和重寫了IIf語句,但是它仍然不能正確地過濾條件。

結果(已過濾>= 10%):

+----------+
| PerDiff  |
+----------+
| 985.256  |
| 457.25   |
| 369.54   |
| 245.21   |
| 141.14   |
| 68.23    |
| 28.54    |
| 10.21454 |
| 10.1212  | <------- Criteria met
| 9.555    |
| 8.42     |
| 2.12     |
| 0.42     | <------- Ends at 0
+----------+

顯然,我希望它在滿足條件的地方結束,並且我相信我已經寫了where子句來做到這一點。 我不確定還有什么地方會搞砸。

qryUnion是一個子查詢,但是我只是為了獲取Dates和DateBals而編寫的。

任何幫助將不勝感激! 我對SQL(和VBA)還是有點陌生​​。 提前致謝!

編輯1:

我也嘗試過

 WHERE IIf(([Day2Bal]>[Day1Bal]),((([Day2Bal]-[Day1Bal])/[Day1Bal])*100),(((([Day2Bal]-[Day1Bal])/[Day1Bal])*-1)*100)) >= [Forms]![Compare]![txtPercent] _ 
AND NOT IIf(([Day2Bal]>[Day1Bal]),((([Day2Bal]-[Day1Bal])/[Day1Bal])*100),(((([Day2Bal]-[Day1Bal])/[Day1Bal])*-1)*100)) < [Forms]![Compare]![txtPercent]

至於不顯示任何小於給定百分比的數據。 這條線不起作用。 我的WHERE子句可能不是問題嗎? 我不確定問題可能還在哪里。

*可能存在更好的答案,但這也可以實現您的目標:

您可以在編寫最終查詢之前為PerDiff字段創建子查詢:

SELECT [x].[ID], [x].[Name], [x].[Day1Date], [x].[Day1Bal], [x].[Day2Date], [x].[Day2Bal], [x].[Difference], IIf(([Day2Bal]>[Day1Bal]),((([Day2Bal]-[Day1Bal])/[Day1Bal])*100),(((([Day2Bal]-[Day1Bal])/[Day1Bal])*-1)*100)) AS PerDiff

FROM qryUnion AS x

然后,創建此子查詢將為您提供select子句中iff語句的結果,該結果可在下一個查詢中使用。 因此,您的最終查詢可以使用如下的Where子句:

WHERE PerDiff > [Forms]![Compare]![txtPercent]
ORDER BY PerDiff DESC

經過大量的麻煩排除后,看來我的問題是我IIf陳述中的* 100

有效的SQL:

SELECT [x].[DDANbr], [x].[Name], [x].[Day1Date], [x].[Day1Bal], [x].[Day2Date], [x].[Day2Bal], [x].[Difference], IIf(([Day2Bal]>[Day1Bal]),((([Day2Bal]-[Day1Bal])/[Day1Bal])),(((([Day2Bal]-[Day1Bal])/[Day1Bal])*-1))) AS PerDiff

FROM qry250CapAllCompare_Union AS x
--Added /100 at the end of WHERE clause to ensure that I was getting 10% because math
WHERE IIf(([Day2Bal]>[Day1Bal]),((([Day2Bal]-[Day1Bal])/[Day1Bal])),(((([Day2Bal]-[Day1Bal])/[Day1Bal])*-1)))>=Forms!frmCompare!txtPercent/100

ORDER BY IIf(([Day2Bal]>[Day1Bal]),((([Day2Bal]-[Day1Bal])/[Day1Bal])),(((([Day2Bal]-[Day1Bal])/[Day1Bal])*-1))) DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM