私はデータを取得するために必要な3つのテーブルを持っていますが、左側のテーブルは常に "どこ"で呼び出された行を表示する必要があります。私の問題は、3つのテーブルがあるので、これを動作させることができないということです。私は狂気のような結合を試みましたが、2つのテーブルだけを扱うときには機能しますが、3つ目のテーブルを取得するとすぐに機能しません。3つのテーブル全体でNULLでない行しか表示されません。他の2つのテーブルが指定されたIDに対して完全にヌルであるかどうかにかかわらず、指定したIDを最初のテーブルに表示できるようにする必要があります1つのクエリ、3つのテーブル、すべての行を左側のテーブルに表示しますか?
私は読み取りアクセスしかないので、仕事。以下は、指定された日のデータがないために表示されないIDがあることを除いて、私が望むデータを取得するためのものであるとして機能するSQLコードです。
select
[User].Id,
[User].Name,
convert(float,round(sum(SalesOrderJournalDetail.Price*SalesOrderJournalDetail.Shipped),2)) as 'Sales Yesterday',
convert(float,round(sum(SalesOrderJournalDetail.ActualCost*SalesOrderJournalDetail.Shipped),2)) as 'Cost Yesterday',
count(distinct(SalesOrderJournalDetail.SalesOrderId)) as 'Orders Yesterday',
count(SalesOrderJournalDetail.SalesOrderId) as 'Lines Yesterday',
convert(float,UserTotal.SalesMTD,2) as 'Sales MTD',
round(convert(float,UserTotal.CostMTD,2),2) as 'Cost MTD'
from
[User], UserTotal, SalesOrderJournalDetail
where
[User].Id in (' 725',' 150',' 239',' 225',' 209',' 227',' 222',' 232',' 241',' 215',' 214',' 722',' 134',' 201',' 238',' 721','M104',' 244',' 245',' 104')
and convert(varchar(10),SalesOrderJournalDetail.InvoiceDate,111) = '2012/04/19'
and [User].Id=SalesOrderJournalDetail.SalesPersonUserId
and SalesOrderJournalDetail.SalesPersonUserId=UserTotal.UserId
group by [User].Id, [User].Name, SalesOrderJournalDetail.SalesPersonUserId, UserTotal.UserId, UserTotal.SalesMTD, UserTotal.CostMTD
order by [User].Name
構造を説明するために、[ユーザー]テーブルには、ユーザーのID番号を表示し、名前は、SalesOrderJournalDetailテーブルには、当日の売上高を表示し、UserTotalテーブルは(いくつかの計算を経て)月次売上データが表示されます。
後者の2つのテーブルから1日の売上と月間売上を表示する必要があり、最初のユーザーの名前とIDを取得する必要があります。
すべての3つのテーブルのユニークなデータは、[ユーザー]です.ID、SalesJournalDetail.SalesPersonUserId、およびUserTotal.UserId
何がある場合、私は、これは、すべてのIDがどこに示しています表示するために取得することができますどのように任意のアイデアは関係なく、cluaseませんそのユーザーの日または月間売上高は?
ああ、これは、Microsoft SQLに
感謝を使用しています!
私が期待していたよりもはるかに徹底した答えです:)しかし、SQL Management StudioをテストするためにSQL Management Studioに貼り付けると、動作しないようです。私は "無効なオブジェクト名 'SalesUser'を取得します。"エラー。私は "ActualPrice"を "ActualCost"に戻して自分のデータベースとマッチさせましたが、変更が必要なものがあるかどうかは確信していませんか?申し訳ありませんが、私は非常にSQLに新しいです。ありがとうございました! – BlueCaret
私のテーブル名は[SalesUser]で、あなたのテーブル名は[User]です。あなたはその変更を行う必要がある場合はテーブルスキーマと一致する必要があります...それはテーブル、上記のクエリを実行しました..オブジェクト名、つまりテーブル名とカラム名がテーブルに一致することを確認してください。 –
できます!どうもありがとうございます!私は1週間このことを理解しようとしてきましたが、現在のクエリが何であるかに基づいて、私は近くにいませんでした:) – BlueCaret