我在当前页面中有两个查询。它们非常相似,但仍返回不同数量的记录。这是示例:
查询1
agreementId
查询2
SELECT
recid,
cost,
cur_year
FROM Info i
INNER JOIN Extension ex
ON ex.recid = i.recid
AND ex.categoryid = i.categoryid
WHERE cur_year = 2018
AND info_id = 4531
在这种情况下,查询1返回2条记录。查询2返回1条记录。我想知道将这两者放在SP中是否是一个好主意?当前代码有两个单独的查询,并自动命中数据库两次。我的想法是两个有一个数据库调用并返回两个数据集。如果有人举例说明如何实现这一目标,请告诉我。谢谢。
答案 0 :(得分:0)
为什么不只添加另一列?存储过程中的两个查询仍然两次访问数据库。
而且,您可以将其表示为:
SELECT recid, cost, cur_date,
SUM(CASE WHEN cost > 0 THEN cost ELSE 0 END) OVER () as total_cost
FROM Info i INNER JOIN
Extension ex
ON ex.recid = i.recid AND
ex.categoryid = i.categoryid
WHERE cur_date = '2018' AND -- this is suspicious. Dates are not years
info_id = '4531';
答案 1 :(得分:0)
由于某些调用者在传递第一个结果集时启动返回,因此在proc主体的开头设置nocount为on。我不知道让一个查询返回2套。
set nocount on;