我有一個需求,其中有四個參數。 P1,P2,P3,P4。用戶可以輸入其中任何一種或者單個或者組合。我想只顯示他通過求和和分組輸入的列。其他列應該被排除。我怎樣才能做到這一點?在Oracle中動態求和和組合
3
A
回答
1
像這樣的事情可能對你工作(我不是100%肯定,因爲你的問題很模糊)
SELECT
CASE WHEN :p1 = 0 THEN p1 ELSE NULL END AS p1,
CASE WHEN :p2 = 0 THEN p2 ELSE NULL END AS p2,
CASE WHEN :p3 = 0 THEN p3 ELSE NULL END AS p3,
CASE WHEN :p4 = 0 THEN p4 ELSE NULL END AS p4
FROM
yourTable
GROUP BY
CASE WHEN :p1 = 0 THEN p1 ELSE NULL END,
CASE WHEN :p2 = 0 THEN p2 ELSE NULL END,
CASE WHEN :p3 = 0 THEN p3 ELSE NULL END,
CASE WHEN :p4 = 0 THEN p4 ELSE NULL END
注意,但是,SQL經常使用這種類型的表現相當糟糕的查詢。
對於每個固定的查詢,編譯一個單獨的計劃。用於生成結果的算法在該點固定。當你的參數改變時它不會被重新編譯。
這很重要,因爲根據您的索引,GROUP BY p1, p2
可能會導致與使用GROUP BY p3, p4
有根本不同的計劃。
因此,在代碼中重新生成SQL語句通常會更加高效。
與其讓SQL使用參數選擇哪些字段被聚合,不如使用參數來編寫全新的SQL語句,而是執行新的SQL語句。
0
,如果你想使用類似MySQL中組CONCAT這可以幫助 Is there an Oracle SQL query that aggregates multiple rows into one row?
0
這個問題可以通過使用動態SQL來解決。在動態SQL中,您可以首先基於輸入參數構造您的select語句,然後使用例如執行立即。請閱讀有關如何使用動態SQL的oracle documentation。
相關問題
- 1. 動態求和
- 2. 組合數組和求和整數
- 3. 動態分組條件求和值
- 4. 在ASP.NET MVC中混合OutputCache和動態範圍請求
- 5. 在動態SQL中使用Oracle集合
- 6. 組合求和轉入
- 7. 如何在Java中創建動態組合框,在單擊按鈕時添加和刪除動態組合框?
- 8. 組合框與靜態和動態數據在一起wpf
- 9. 動態組合和mootools get方法在IE8中不起作用
- 10. 如何在HTML中動態使用Javascript組合行和列
- 11. 在Windows窗體C中使用TableLayoutPanel和動態組合框#
- 12. 如何在ng-repeat中組合mouseenter/mouseleave和動態設置類?
- 13. 如何在htmlservice和javascript組合框中動態添加選項
- 14. Oracle逐行求和
- 15. 動態求和函數
- 16. 動態和靜態數組
- 17. Oracle pl/sql排列和組合
- 18. 在PHP中求和數組?
- 19. Pandas中的動態累積求和
- 20. 在Oracle中合併和匹配數據
- 21. 在Oracle中合併和匹配表格
- 22. 如何在oracle中組合和計數兩列?
- 23. 如何在SQL Union中組合字符和非字符值(Oracle)
- 24. 在caliburn.micro中綁定和訪問動態組合框/列表框集合
- 25. 如何在Jquery中對數組進行求和和求和?
- 26. 組合框動態在ZK
- 27. 具有聯合靜態和動態字符數組的結構
- 28. 到組合框添加靜態和動態數據WPF
- 29. .htaccess - 是否可以有靜態和動態url的組合?
- 30. 動態填充和更新組合框中的項目
用戶通過應用程序輸入數據(網絡,桌面,命令行,無所謂)。你應該在應用程序中動態構建你的查詢,這根本不是一個PLSQL問題... –
你的問題並不清楚,你的意思是*總結和分組* *?你需要做一些旋轉嗎? –
我想知道如何建立查詢..因爲他可以輸入24個組合。例如,如果他輸入p1,p2我只需要通過p1,p2從表組中選擇p1,p2來顯示p1,p2。 ,p3他可以輸入.p1,p2,p3,p4 als0.Jus -1.Hop我明確地解釋了我的需求 –