我有一個返回多個列的存儲過程。像colA colB colC .... colL 我可以寫另一個查詢來獲取相同的列,但是如果colC/colB < 10%,即WHERE篩選10%。基本上應該顯示與存儲過程返回的列相同的列,但現在只有colC/colB應該是< 10%。我無法修改存儲過程,因爲它在另一個應用程序中使用,我只是從中獲取值。關於微調查詢的sql問題
0
A
回答
1
您需要使用表變量(@)或臨時表(#),因爲你不能直接從結果集的存儲procdure的選擇:
DECLARE @table TABLE (colA int, colB int, colC int, ...)
INSERT INTO @table
EXEC StoreProcedureName
SELECT * FROM @table WHERE colC * 10 < colB
1
這應該工作。我可能會建議增加一個WHERE子句這樣的:
WHERE (colC * 10) < ColB
這將阻止您不必做百分比和東西。
您可能只是在代碼中篩選結果。
BTW ...我這是怎麼轉換COLC/COLB < 10%:
C/B < 10%
C/B < .1 (convert percentage to decimal)
C < .1B (multiply both sides by B)
10C < B (multiply both sides by 10)
你甚至可以寫新的存儲過程採取了要返回的比例金額的變數。 where子句然後將WHERE(colC * @percentage)< colB
1
我假設這裏的問題是,您無法使用內聯SELECT語句獲取存儲過程的結果;正確?換句話說,你希望能夠說,
SELECT * FROM myProc WHERE (colcC/colB) < .1
但不起作用,因爲你不能像對待在這種情況下表中的存儲過程。
此問題的最佳解決方案是創建一個新的存儲過程做兩件事情:
1)該過程的結果複製到一個臨時表,例如:
INSERT INTO #myTempTable EXEC myProcedure
2 )選擇你感興趣的行,像這樣:
SELECT * FROM #myTempTable WHERE (colC * 10) < colB
(從納尼亞借COLC * 10招)
01。祝你好運!
+0
謝謝大家。我將使用這個並檢查。 – sreeprasad
相關問題
- 1. 關於SQL查詢的問題
- 2. 關於sql查詢的問題
- 3. 關於SQL查詢的問題
- 4. SQL:關於查詢優化的問題
- 5. 關於SQL查詢的問題
- 6. 關於微調器接口的問題
- 7. 問題有關SQL查詢
- 8. 關於列標題的SQL查詢
- 9. 關於SQL查詢?
- 10. 關於SQL查詢
- 11. 關於sql查詢
- 12. 關於sql查詢
- 13. 關於SQL查詢
- 14. 關於查詢集的Django問題
- 15. 關於SolrJ範圍查詢的問題?
- 16. 關於選擇查詢的問題
- 17. 關於LINQ和Lambda查詢的問題
- 18. 關於合併AR查詢的問題
- 19. 關於Linq查詢的問題
- 20. 關於查詢Linq結果的問題
- 21. 查詢微調
- 22. 查詢微調
- 23. 關於Dapper SQL查詢和PostgreSQL參數的問題
- 24. 關於SQL Server查詢組合的10,000英尺概述問題
- 25. 關於sql的查詢
- 26. 關於wp_postmeta的SQL查詢
- 27. SQL查詢問題
- 28. SQL查詢問題
- 29. sql查詢問題
- 30. SQL查詢問題
我認爲存儲的問題是,過程無法修改,所以不能將WHERE子句直接應用於結果。 –
好的。好點子。如果是這樣,你的解決方案的工作如果他可以寫一個新的存儲過程,那麼他可以使用這個解決方案。 – Narnian
我喜歡colC * 10技巧。很好地避免了不同數據類型的問題。 –