我有一个返回多个列的存储过程。像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技巧。很好地避免了不同数据类型的问题。 –