在sql server中显示多个变量?

在sql server中显示多个变量?,sql,sql-server-2008,Sql,Sql Server 2008,我有两个问题: Select count(*) as countOne where field = '1' Select count(*) as countTwo where field = '2' 在结果查看器中执行这些查询后,我希望看到的内容: countOne | countTwo 23 | 123 如何通过只运行一个查询来获得两个查询的结果?最简单的方法是将每个查询作为子选择运行,例如 SELECT ( Select count(*) where field

我有两个问题:

Select count(*) as countOne where field = '1'
Select count(*) as countTwo where field = '2'
在结果查看器中执行这些查询后,我希望看到的内容:

countOne | countTwo
      23 |      123

如何通过只运行一个查询来获得两个查询的结果?

最简单的方法是将每个查询作为子选择运行,例如

SELECT 
(
Select count(*) where field = '1' as countOne,
Select count(*) where field = '2' as countTwo
)
但这未必是最好的办法


另一种方法是按字段分组,然后执行PIVOT操作,将每个组作为一个单独的列进行选择。

最简单的方法是将每个组作为一个子选择运行

SELECT 
(
Select count(*) where field = '1' as countOne,
Select count(*) where field = '2' as countTwo
)
SELECT COUNT(CASE WHEN field = '1' THEN 1 END) AS countOne,
       COUNT(CASE WHEN field = '2' THEN 1 END) AS countTwo
FROM   YourTable
WHERE  field IN ( '1', '2' )  
但这未必是最好的办法


另一种方法是按字段分组,然后执行PIVOT以将每个组作为一个单独的列进行选择。

这两个选择是否针对同一个表?这两个选择是否针对同一个表?这称为子查询?只是效率很低吗?如果是这样的话,还有什么更好的方法呢?这将是两个单独选择的数据密集型方法。我在答案中指定了另一个选项PIVOT,但必须查找语法(我不经常这样做),这称为子查询?只是效率很低吗?如果是这样的话,还有什么更好的方法呢?这将是两个单独选择的数据密集型方法。我在答案中指定了另一个选项PIVOT,但必须查找语法(我不经常这样做)
SELECT COUNT(CASE WHEN field = '1' THEN 1 END) AS countOne,
       COUNT(CASE WHEN field = '2' THEN 1 END) AS countTwo
FROM   YourTable
WHERE  field IN ( '1', '2' )