抽象常见SQL查询方法(不同的句子)

时间:2014-08-13 15:32:25

标签: sql sql-server sql-server-2012

假设您有一个常见的查询,您可以在SQL中一遍又一遍地复制和粘贴。让我们假设为了简单起见,只返回总记录和与WHERE条件匹配的记录。

SELECT COUNT(*) TheseMatch, 
(SELECT COUNT(*) FROM [MyTable]) ThisIsMyTotal
FROM [MyTable]  
WHERE MyCondition = 'MyCondition'

通过脚本的其余部分,唯一改变的是WHERE子句。所以你的下一个查询可能是:

SELECT COUNT(*) TheseMatch, 
(SELECT COUNT(*) FROM [MyTable]) ThisIsMyTotal
FROM [MyTable]  
WHERE MyCondition = 'MyCondition' OR MyCondition = 'MyCondition1'

两者之间存在很多共性,唯一的区别就是WHERE。在SQL中是否有一种方法可以将前三行抽象为静态方法,这种方法通常可以调用以引入某种程度的重用,也许可以将WHERE作为参数传递?

TIA!

1 个答案:

答案 0 :(得分:3)

我会在这里使用表值参数,因为你必须支持多个条件。基本上你需要定义你的表类型,然后你可以像处理存储过程中的任何其他表一样对待它。

您可以在此处阅读更多详细信息和实现语法。 http://msdn.microsoft.com/en-us/library/bb675163%28v=vs.110%29.aspx