【发布时间】:2014-09-19 13:06:30
【问题描述】:
我有一个如下的存储过程。
DECLARE @Temp TABLE
(...)
INSERT INTO @Temp
SELECT MeasureDate, col1, col2
FROM Table1
WHERE Col3 = 1
INSERT INTO @Temp
SELECT MeasureDate, col1, col2
FROM Table1
WHERE Col3 = 1
AND Col4 = 7000
SELECT SUM(col1) / SUM(col2) AS Percentage, MAX(), MeasureDate
FROM @Temp
GROUP BY MeasureDate
我在临时表中做了两次插入,第二次插入额外的 WHERE 但相同的列在同一张表中,然后我在临时表上执行 SUM(col1) / SUM(col2) 以返回我需要的结果。有没有办法将所有这些插入和选择合并到一个语句中,所以我不使用临时表并从 Table1 中进行一次选择?或者即使我仍然需要临时表,将选择合并为一个选择而不是两个单独的选择?存储过程可以正常工作,只是在寻找一种缩短它的方法。
谢谢。
【问题讨论】:
-
可以这样做,但您最好提供更多细节。不清楚为什么要将重复数据放入临时表中,如果这是一个要求或一个错误,并且在构建查询时会产生巨大的差异。
-
你说得对,我更正了查询,两个查询不同,一个是 where col3=2,另一个是 where col3=1 and col4=7000。这不是重复数据
标签: sql tsql stored-procedures