sql - 如何在 SQL Server 2012 中生成特定查询

标签 sql sql-server database sql-server-2012

我需要生成一份报告,其中包含特定产品的销售数量。 (服装)

我有 4 个表:

  • Orders 包含 ID 和日期
  • Product_Model 包含模型描述和性别
  • Product_Type 包含产品型号 ID、价格、尺寸、颜色
  • Product_Order 包含“Orders”的引用和“Product_Type”的引用

我需要生成一份报告,例如显示所有月份的男性蓝色 T 恤的数量。

依次为:产品型号/性别/颜色

例如:

enter image description here

Also check my simple representation in SQLFiddle

非常感谢您的支持! =)

最佳答案

尝试这样的事情:

SELECT MODEL, 
       GENDER, 
       COLOR, 
       SUM(CASE 
             WHEN MONTH(ORDER_DATE) = 1 THEN 1 
             ELSE 0 
           END) Jan, 
       SUM(CASE 
             WHEN MONTH(ORDER_DATE) = 2 THEN 1 
             ELSE 0 
           END) Feb, 
       SUM(CASE 
             WHEN MONTH(ORDER_DATE) = 3 THEN 1 
             ELSE 0 
           END) Mar, 
       SUM(CASE 
             WHEN MONTH(ORDER_DATE) = 4 THEN 1 
             ELSE 0 
           END) Apr 
FROM   PRODUCT_MODELS t1 
       INNER JOIN PRODUCT_TYPES t2 
               ON t1.PRODUCT_MODEL_ID = t2.PRODUCT_MODEL_ID 
       INNER JOIN PRODUCT_ORDERS T3 
               ON t2.PRODUCT_TYPE_ID = t3.PRODUCT_TYPE_ID 
       INNER JOIN ORDERS T4 
               ON T3.ORDER_ID = T4.ORDER_ID 
GROUP  BY MODEL, 
          GENDER, 
          COLOR 

我用你的 SQL fiddle 制作了 my own example .

关于sql - 如何在 SQL Server 2012 中生成特定查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18579145/

相关文章:

sql - 是否可以向表中插入任意数据?

sql-server - 以 select 作为参数执行存储过程

sql - 函数索引在 SQL 中如何工作?

sql - 当一个行的结束时间是另一个行的开始时间时合并行 (Oracle)

MySQL删除重复行

sql - 当我不想使用聚合时,是否应该使用 Pivot 将 SQL Server 2008 行值转换为列名?

sql - 加入父表和子表的最佳方式

mysql - 在查询中使用 if 条件时进行全表扫描

sql - 为什么更新触发器在 SQL Server 中进行舍入?

mysql - key 'PRIMARY' 的重复条目