2017-12-14 6 views
0

Adventureworksのいくつかの課題を解決しようとしています。結合されたテーブルを削除/要約しようとしています。 ...テーブルを結合して別の値を合計する

など月曜日、火曜日、水曜日、唯一の明確な日付を示す表で

use AdventureWorks2012 
select datename(dw,orderdate) as "Day", LineTotal,OrderQty 
from sales.SalesOrderDetail join sales.SalesOrderHeader 
on (SalesOrderDetail.SalesOrderID=SalesOrderHeader.SalesOrderID) 

少しの調整、結果:

すると、次は正しく私の2つのテーブルを結合と3列を生成します

use AdventureWorks2012 
select distinct(datename(dw,orderdate)) as "Day" 
from sales.SalesOrderDetail join sales.SalesOrderHeader 
on (SalesOrderDetail.SalesOrderID=SalesOrderHeader.SalesOrderID) 

enter image description here

私は一日あたりのLineTotalの合計とOrderQtyの合計を生成する方法を把握しようが、成功を持っていませんよ。

use AdventureWorks2012 
select distinct(datename(dw,orderdate)) as "Day", sum(LineTotal), SUM(OrderQty) 
from sales.SalesOrderDetail join sales.SalesOrderHeader 
on (SalesOrderDetail.SalesOrderID=SalesOrderHeader.SalesOrderID) 
group by OrderDate 

はしかし、これは多くの、多くの行、代わりのわずか7行とLineTotal、OrderQty添付の合計を生成します。

私が得ている最も近い

は次のとおりです。

ありがとうございます。

答えて

0
use AdventureWorks2012 
select 
    datename(dw,orderdate) as "Day", 
    SumLineTotal=SUM(LineTotal), 
    SumOrderQty=SUM(OrderQty) 
from 
    sales.SalesOrderDetail 
    INNER join sales.SalesOrderHeader on (SalesOrderDetail.SalesOrderID=SalesOrderHeader.SalesOrderID) 
group by 
    datename(dw,orderdate) 
+0

これらのすべてがうまくいきました。ありがとうございました。 – AdMac

0

私は冒険作品を持っていませんが、あなたはこのようなことができると確信しています。注意これを少し簡単にするためにここでエイリアスを使用しています。また、短い手の代わりにdatepartと長い手の日付部分を使用します。ショートハンドバージョンは覚えにくいです。

select OrderDay = datepart(dayofweek, soh.OrderDate) 
    , sum(sod.LineTotal) 
    , SUM(sod.OrderQty) 
from sales.SalesOrderDetail sod 
join sales.SalesOrderHeader soh on sod.SalesOrderID = soh.SalesOrderID 
group by datepart(dayofweek, soh.OrderDate) 
0
use AdventureWorks2012 
select datename(dw,orderdate) as "Day", sum(LineTotal), SUM(OrderQty) 
from sales.SalesOrderDetail join sales.SalesOrderHeader 
on SalesOrderDetail.SalesOrderID=SalesOrderHeader.SalesOrderID 
group by datename(dw,orderdate) 

使用される場合、それは行の形成を制御group by句ないselect句です。したがって、group by句のorderdateカラムでdatename関数を使用してください。

また、distinctは、でないことに注意してください。だから、別名という言葉の後のかっこは何も意味しません、実際には無視されます。

group byを使用する場合は、select distinctを使用しないでください。冗長です。

+0

Distinctを使用していただきありがとうございます。今後も続けていくつもりです。 – AdMac

関連する問題