SQL Azureを使用してデータベースにクエリを作成します。SQL Azureは、そのオフィス内のオフィスとスタッフのセットとして月ごとに売上高を返します。 この呼ばれvwOfficeAndNegSalesTotalsを返し、次のようになります問い合わせ::私は交渉の日付に年FeeValueの累計を提供して別の列を追加する必要があります年内の列の値に基づいて実行中の列の合計
SELECT OfficeID, DATENAME(Month,PipelineDate) + ' ' + DATENAME(Year,PipelineDate) as [PipelineMonth], OfficeName, Negotiator, Status, SUM(Fee) as FeeValue FROM vwBankingProjections GROUP BY OfficeID, DATENAME(Month,PipelineDate) + ' ' + DATENAME(Year,PipelineDate), OfficeName, Negotiator, Status, DATEPART(Month,PipelineDate), DATEPART(YEAR,PipelineDate)
下の画像でその行には、その行の月までを意味する「今日までの」年が含まれています。さらに、ステータスが[支払いを受け取った]の場合は、FeeValueの合計だけにする必要があります。ちょうどではなく、実際の日付が含まれないあなたはvwOfficeAndNegSalesTotalsの構造から言うことができるように
、クエリはその上に、それが基づいています(vwBankingProjections):
だから、それはこのようなものを返しますテキストMonth + Year - これらの日付はPipelineDate列にあります。
私の最初の試みでは、2016年5月(執筆時点で)の行を見ることは今までの年となりますが、その年の合計をその行(2016年4月の行を表示する場合は、2016年1月〜4月の合計となります)。場合、それは任意のヘルプのですが、ここで私はそのために思い付いたものです:
SELECT OfficeID, DATENAME(Year,PipelineDate) as [PipelineYear], OfficeName, Negotiator, SUM(Fee) as YTDFee FROM vwBankingProjections WHERE Status IN ('Payment Received') GROUP BY OfficeID, DATENAME(Year,PipelineDate), OfficeName, Negotiator
誰でも助けることができるならば、これは少し私のスキルセットを超えているとして、私は、感謝されると思います。
どうもありがとう
アンドリュー
これは完璧です。ありがとうございます。あなたが送ったBooks Onlineのリンクを読んだことがありますが、それは助けになりますが、内容の一部を理解することは本当に難しいです。例: _ ROWS/RANGEが指定され、(短い構文)にが使用されている場合、この指定はウィンドウフレーム境界の開始点に使用され、CURRENT ROWは境界の終了に使用されますポイント。たとえば、 "行5进行"は "行5行と行の間に行"に等しいです。 _ 私はちょうど高密度であると確信していますが、私は助けを見つけることをお勧めする他の場所にありますか? –
user1401286
はい、申し訳ありませんが、書籍オンラインは必ずしも容易ではありません。 OVER句は一目ぼれ、特にROW OR RANGE部分がかなり複雑です。Itzik Ben-GanのMicrosoft SQL Server 2012 T-SQLの基礎>第7章:クエリの基礎>ウィンドウ関数を参照してください。 – RichardCL
また、彼はフォローアップの本:Windows関数を使用したMicrosoft SQL Server 2012高性能T-SQL(開発者リファレンス)を書いています。私はそれを持っていないが、それはおそらく良いです。 – RichardCL