Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server-能够在select?_Sql_Sql Server - Fatal编程技术网

SQL Server-能够在select?

SQL Server-能够在select?,sql,sql-server,Sql,Sql Server,我正在尝试创建一个查询,该查询将在SQL Server中输出总数以及总数的子集。我可以想出一种通过子查询来实现这一点的方法,但这似乎是一项繁重的工作。有没有更快的方法来编写此查询 Table name: orders OrderID Date Type OrderSize 1 1/1/2012 Electronics $282.02 2 1/1/2012 Electronics

我正在尝试创建一个查询,该查询将在
SQL Server
中输出总数以及总数的子集。我可以想出一种通过子查询来实现这一点的方法,但这似乎是一项繁重的工作。有没有更快的方法来编写此查询

Table name: orders


OrderID    Date           Type           OrderSize
1          1/1/2012       Electronics    $282.02
2          1/1/2012       Electronics    $1,000.56
3          1/1/2012       Books          $17.25
4          1/1/2012       Books          $10.00
我试图输出的内容如下所示:

Date       ElectronicOrders    ElectronicOrderSize    BookOrders   BookOrderSize
1/1/2012   2                   $1,282.58              2            $27.25
我可以创建一个临时表,然后运行2个更新查询-1
WHERE Type='Electronics'
和1
WHERE Type='Books'

我在一些编程语言(如
R
)中看到的是变量子集的能力。我有没有办法说这样的话:

count(OrderID, Type = 'Electronics) as ElectronicOrders, sum(OrderSize, Type = 'Electronics') as ElectronicOrderSize

或者我一直在使用
子查询
更新查询

我从来没有想到过新的PIVOT语法,但是您可以通过分组和在case语句中获取聚合函数来创建PIVOT表

select [date], sum( case when type = 'Electronics' then (ordersize) else 0 end) AS ElectronicsSum,
sum( case when type = 'Electronics' then 1 else 0 end) AS ElectronicsCount,
sum( case when type = 'Books' then (ordersize) else 0 end) AS BooksSum,
sum( case when type = 'Books' then 1 else 0 end) AS BooksCoumt
from orders
group by [date]

我放了一个东西来测试它。如果Aaron B.发布了一个解决方案,给他一个答案,我甚至可能还没有意识到它的数据透视性。

我从来没有想到过新的数据透视语法,但你可以通过分组和在case语句中获取聚合函数来创建数据透视表

select [date], sum( case when type = 'Electronics' then (ordersize) else 0 end) AS ElectronicsSum,
sum( case when type = 'Electronics' then 1 else 0 end) AS ElectronicsCount,
sum( case when type = 'Books' then (ordersize) else 0 end) AS BooksSum,
sum( case when type = 'Books' then 1 else 0 end) AS BooksCoumt
from orders
group by [date]

我放了一个东西来测试它。如果Aaron B.发布了一个解决方案,给他一个答案,我甚至可能没有意识到它的关键点。

这看起来像一个关键点,但重要的是要知道你是否知道所有潜在的类别。我知道所有的类别。。。我对PIVOT不熟悉。。。现在搜索,我想Pivot会有用的。我可以看到如何同时进行1次计算,例如count(),但不包括count()和sum(*)。这看起来像一个轴,但重要的是要知道您是否知道所有潜在类别。我知道所有类别。。。我对PIVOT不熟悉。。。现在搜索,我想Pivot会有用的。我可以看到如何进行1次计算,例如count(),但不能同时进行count()和sum(*)。+1这可能是我应该做的。可能有一种更优雅的方式使用PIVOT(可能是两个PIVOT?),但我也还没有掌握语法。这正是我所需要的方式。谢谢你的帮助。这可能是我本该做的。可能有一种更优雅的方式使用PIVOT(可能是两个PIVOT?),但我也还没有掌握语法。这正是我所需要的方式。谢谢你的帮助。