我希望SQL查询遵循WHERE语句的条件,但子查询除外。在下面的示例中,我想获取上周的所有条目,但我希望子查询忽略该外部WHERE子句,但我不确定它将如何表现。
例如:
SELECT
ProductID,
SUM(CASE WHEN from_source = 'button' THEN 1 ELSE 0 END) 'Used Button',
(SELECT COUNT(*) FROM tracking WHERE from_source = 'button') 'Used Button to date'
FROM tracking
WHERE date_entered > (GETDATE() - 7)
GROUP BY ProductID
预期输出,第二列基于外部WHERE计算,子查询不查看外部WHERE:
ProductID |二手按钮|使用按钮到日期
123 | 5 | 102
456 | 8 | 175
答案 0 :(得分:1)
您可以使用条件聚合编写查询:
select sum(case when date_entered > (GETDATE() - 7) then 1 else 0
end) as UsedButton,
count(*) as UsedButtonToDate
from tracking
where from_source = 'button';
这似乎是一种更简单的方法。
顺便说一句,您不应该对列别名使用单引号。使用不必转义的内容(如上所述)命名列或使用方括号。