根据输入值将结果分为两列?数据库服务器

黑暗菲尼克斯

我在 SQL Server 2014 中使用 Nortwind 数据库,我尝试进行查询以划分两个不同年份的订单结果,我在查询中想要的格式是

category |anio one | anio two

年份可能会有所不同,到目前为止我尝试的是

SELECT ca.CategoryName , YEAR(o.OrderDate), SUM(ot.UnitPrice*ot.Quantity) as total
FROM Orders o 
INNER JOIN [Order Details] ot ON O.OrderID = ot.OrderID
INNER JOIN Products pro ON ot.ProductID = pro.ProductID
INNER JOIN Categories ca ON pro.CategoryID = ca.CategoryID
GROUP BY ca.CategoryName,YEAR(o.OrderDate)
ORDER BY ca.CategoryName;

这给了我不同年份每个类别的总数,1996-1997-1998在列中YEAR(o.OrderDate)

我想得到例如

CategoryName | 1996 | 1997

Beverages   |53879,20 | 110424,00
Condiments  |19458,30 | 59679,00
....
保罗麦克斯韦

使用“条件聚合”。

SELECT
      ca.CategoryName
    , SUM(case when year(o.OrderDate) = 1996 then ot.UnitPrice * ot.Quantity end) AS total_1996
    , SUM(case when year(o.OrderDate) = 1997 then ot.UnitPrice * ot.Quantity end) AS total_1997
FROM Orders o
INNER JOIN [Order Details] ot ON o.OrderID = ot.OrderID
INNER JOIN Products pro ON ot.ProductID = pro.ProductID
INNER JOIN Categories ca ON pro.CategoryID = ca.CategoryID
where o.OrderDate >= '19960101' and o.OrderDate < '19980101'
GROUP BY
      ca.CategoryName
ORDER BY
      ca.CategoryName

基本上这意味着在聚合函数中使用 case 表达式。

我的情况你想知道为什么我没有在 where 子句中使用“之间:见坏习惯踢:错误处理日期/范围查询

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据开始日期在日期值旁边显示记录。数据库服务器

如何将结果插入所需的行?数据库服务器

将结果从数据库分为几行

如果输入和输出数据库位于两个不同的数据库服务器中,是否可以使用渲染映射

如何将本地数据库服务器连接到SQL Azure数据库服务器

根据数据库结果选择值

将MySQL数据库从本地MAMP服务器移动到主机的服务器

如何将输入文件中的行分为两部分,然后将其与c#中数据库表的两列数据进行比较?

如何将链接服务器中特定列的非空值的所有记录选择到本地数据库中

服务器与数据库通信

Java服务器数据库

在两个链接服务器中加入两个数据库的查询

将 MySQL 数据库从实时服务器 MySQL 数据恢复到本地服务器 MySQL 数据

如何将 $_POST 值分为两部分并将其插入数据库

根据值中的逗号将字典的值拆分为两个数据框列

Android,sqlite数据库在两列中找到两个值以及结果值

根据数据库查询ASP.NET VB从服务器删除文件

如何将多个列的评估委托给linq中的数据库服务器到sql

将数据库迁移到新服务器时,MySQL 错误字段列表中的未知列 (Windows)

如何从 React + Express 服务器中的数据库查询“额外 10”结果

为什么查询结果重复?数据库服务器

将文件上传到Web服务而不保存到服务器,数据库或本地

查询将表数据从本地数据库复制到链接服务器数据库

如何将本地数据从服务器数据库保存到本地数据库?

将输入传递给服务并将结果保存到Django中的数据库

SymmetricDS:创建两个引用相同数据库的服务器节点

在不同数据库服务器上联接两个表

如何使用Yesod / Persistent访问两个不同的数据库服务器?

在两个不同的服务器之间自动同步phpMyAdmin数据库/表