Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 2008 选择一个网格区域/销售人员/类别组合,其中所有行项目都有多个数量_Sql Server 2008_Select_Adventureworks - Fatal编程技术网

Sql server 2008 选择一个网格区域/销售人员/类别组合,其中所有行项目都有多个数量

Sql server 2008 选择一个网格区域/销售人员/类别组合,其中所有行项目都有多个数量,sql-server-2008,select,adventureworks,Sql Server 2008,Select,Adventureworks,使用AdventureWorks2008R2,我想查询一个 在纵轴上列出每个地区/销售人员组合 列出水平轴上的每个子类别 每个单元格指定销售总数(唯一的SalesOrderID),其中该类别/地区/销售人员组合中的所有行项目的数量为2个或更多 下面是一个示例(虚构的数据,我不知道如何查询真实的数据!): 我认为下面的SQL将为山地自行车(subcatID1)提供此功能,但我不知道如何轻松添加更多列。如果我开始对每一列进行独立查询,它会变得非常慢,非常快(特别是当我必须将所有这些列重新连接在一起时

使用AdventureWorks2008R2,我想查询一个

  • 在纵轴上列出每个地区/销售人员组合
  • 列出水平轴上的每个子类别
  • 每个单元格指定销售总数(唯一的SalesOrderID),其中该类别/地区/销售人员组合中的所有行项目的数量为2个或更多
  • 下面是一个示例(虚构的数据,我不知道如何查询真实的数据!):

    我认为下面的SQL将为山地自行车(subcatID1)提供此功能,但我不知道如何轻松添加更多列。如果我开始对每一列进行独立查询,它会变得非常慢,非常快(特别是当我必须将所有这些列重新连接在一起时!)

    选择
    土地名称为领土,
    sp.BusinessEntityID,
    合计(如果detail.OrderQty>1,则为1,否则为0结束)作为匹配销售
    从…起
    sales.salesorderdetail详细信息
    header.SalesOrderID=detail.SalesOrderID上的内部联接sales.SalesOrderHeader标头
    sp.BusinessEntityID=header.salersonid上的内部加入sales.salessorsp
    内部连接sales.SalesTerritory terr on terr.TerritoryID=sp.TerritoryID
    sop.ProductID=detail.ProductID上的内部连接sales.SpecialOfferProduct sop
    内部连接Production.Product上的Product.ProductID=sop.ProductID
    子类别上的内部联接Production.ProductSubcategory子类别子类别ProductSubcategory ID=Product.ProductSubcategory ID
    哪里
    subcat.ProductSubcategoryID=1——山地自行车
    
    我想先说我没有安装AdventureWorks,所以无法检查查询。。。我也不知道sales person name(销售人员姓名)列的名称,因此您很可能需要更改该名称,但现在,您只需在每个子类别的顶部添加一列即可。我还假设原始查询是正确的

    select
    terr.Name as Territory,
    sp.Name SalesPerson,
    SUM(case when detail.OrderQty > 1 and subcat.ProductSubcategoryID = 1 then 1 else 0 end) as MBikes,
    SUM(case when detail.OrderQty > 1 and subcat.ProductSubcategoryID = 2 then 1 else 0 end) as Chains,
    SUM(case when detail.OrderQty > 1 and subcat.ProductSubcategoryID = 3 then 1 else 0 end) as Gloves
    from
    sales.salesorderdetail detail
    inner join sales.SalesOrderHeader header on header.SalesOrderID = detail.SalesOrderID
    inner join sales.SalesPerson sp on sp.BusinessEntityID = header.SalesPersonID
    inner join sales.SalesTerritory terr on terr.TerritoryID = sp.TerritoryID
    inner join sales.SpecialOfferProduct sop on sop.ProductID = detail.ProductID
    inner join Production.Product on Product.ProductID = sop.ProductID
    inner join Production.ProductSubcategory subcat on subcat.ProductSubcategoryID = Product.ProductSubcategoryID
    group by terr.Name, sp.Name
    
    select
    terr.Name as Territory,
    sp.Name SalesPerson,
    SUM(case when detail.OrderQty > 1 and subcat.ProductSubcategoryID = 1 then 1 else 0 end) as MBikes,
    SUM(case when detail.OrderQty > 1 and subcat.ProductSubcategoryID = 2 then 1 else 0 end) as Chains,
    SUM(case when detail.OrderQty > 1 and subcat.ProductSubcategoryID = 3 then 1 else 0 end) as Gloves
    from
    sales.salesorderdetail detail
    inner join sales.SalesOrderHeader header on header.SalesOrderID = detail.SalesOrderID
    inner join sales.SalesPerson sp on sp.BusinessEntityID = header.SalesPersonID
    inner join sales.SalesTerritory terr on terr.TerritoryID = sp.TerritoryID
    inner join sales.SpecialOfferProduct sop on sop.ProductID = detail.ProductID
    inner join Production.Product on Product.ProductID = sop.ProductID
    inner join Production.ProductSubcategory subcat on subcat.ProductSubcategoryID = Product.ProductSubcategoryID
    group by terr.Name, sp.Name