Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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
Adventure Works SQL Server查询_Sql_Sql Server_Adventureworks - Fatal编程技术网

Adventure Works SQL Server查询

Adventure Works SQL Server查询,sql,sql-server,adventureworks,Sql,Sql Server,Adventureworks,我正在使用AdventureWorks 2014数据库编写SQL查询 我想显示哪些订单包含两种以上的产品?显示订单号、订单值和订单包含的产品数量 我试图自己编写语句(见下文),但我希望能够解决这个关系: select SalesOrderID , ProductID , LineTotal from Sales.SalesOrderDetail order by SalesOrderID 此代码将给出您期望的答案 SELECT SalesOrderID ,ProductID

我正在使用AdventureWorks 2014数据库编写SQL查询

我想显示哪些订单包含两种以上的产品?显示订单号、订单值和订单包含的产品数量

我试图自己编写语句(见下文),但我希望能够解决这个关系:

select SalesOrderID , ProductID , LineTotal
from Sales.SalesOrderDetail
order by SalesOrderID

此代码将给出您期望的答案

SELECT SalesOrderID 
        ,ProductID
        ,LineTotal
        ,'Sales Order ' +CAST(SalesOrderID AS VARCHAR(100))+'  Contains Productid of'+CAST(ProductID  AS VARCHAR(100))
        AS [ProductsCountPerOrder] 
       ,Productscount
    FROM
(
SELECT   salesorderid , 
         productid , 
         linetotal , 
         Count(productid)OVER(partition BY salesorderid ORDER BY salesorderid) AS productscount 
FROM     sales.salesorderdetail 
)dt 
WHERE dt.productscount>2 
ORDER BY salesorderid
@胡安·卡洛斯·奥罗佩扎

是我做的你能检查一下有没有什么问题吗

select  s.SalesOrderID,
        a.SalesOrderCount, 
        a.ProductCount,
        sum(LineTotal) as OrderValue 
from  Sales.SalesOrderDetail s , 
      (select SalesOrderID ,
              count(SalesOrderID)  as SalesOrderCount ,
              count(productid) as ProductCount
       from Sales.SalesOrderDetail
       group by SalesOrderID 
      ) a
where s.SalesOrderID = a.SalesOrderID
group by a.salesordercount, s.SalesOrderID, a.ProductCount
having a.ProductCount >2 
order by s.SalesOrderID

这是你必须做的作业吗?试着研究一下COUNT()、have和JOIN.乔治你的最后三个问题都是一样的家庭作业。做你自己的家庭作业,这样你就能学到一些东西。如果你想找一些例子,我知道你不能问你不知道的东西,但你要找的神奇单词是:。从那时起,您只需对超过2行进行筛选,然后阅读第1课@GeorgeKouki你不是在问小费。你要求我们做你的工作。最后一个问题你没等一小时就又问了。去读一本教程,在youTube上看一些视频。不要宣传懒惰哦!我以为他是新来的,他是,但如果你检查他的其他问题都是一样的。对不起,兄弟,我没有看到他之前的问题。你不需要子查询。只需按+拥有进行分组。另外,你也不会得到正确的结果,因为你在
saleorder
上的每一项都会得到一个
COUNT()
,我很高兴你这次试一试。检查我的答案。谢谢,我现在正在尝试,昨天我亲手做了很多例子。我并不懒惰……将来,请格式化您的答案,并提供某种程度的解释,这可能有助于OP更好地理解您提出的解决方案。
SELECT SalesOrderID,
       COUNT(ProductID) as total_products,
       SUM(LineTotal) as total_invoice
FROM SalesOrderDetail s
GROUP BY SalesOrderID
HAVING COUNT(ProductID) > 2
ORDER BY s.SalesOrderID
Select 
    SalesOrderID, 
    sum(LineTotal) as [order value], 
    count(SalesOrderID) as [number of Product] 
from Sales.SalesOrderDetail 
    group by SalesOrderID having count(SalesOrderID)>=2 
    order by SalesOrderID desc