我有以下SQL语句:
WITH w1 AS (SELECT [Number] AS v1 FROM [MyTable] WHERE <condition>)
SELECT
SUM(CASE WHEN v1 < @Value THEN v1 ELSE @Value END)
FROM
w1;
我只是好奇,如果MyTable包含10条匹配的记录,在执行上述SQL语句时语句将被处理多少次?
答案 0 :(得分:4)
这将只是内联和处理,就像你写了
SELECT SUM(CASE WHEN [Number] < @Value THEN [Number] ELSE @Value END)
FROM [MyTable]
WHERE <condition>
答案 1 :(得分:1)
最有可能的,执行计划是为每行计算一次标量,然后进行汇总。对于所有匹配的值,将查询w1
一次。