0

こんにちは、次のクエリを書いていますが、結果は必要なものではありません

セクション 1

     選択する

          case_PrimaryCompanyId を会社 ID として、
          CONVERT(VARCHAR(7),ca.case_createddate, 111) AS 日付,
          InvoiceType として「移動残高」、
          sum( mb.Amount) as Amount
ケースから

第2節

左結合 (
選択する
    case_PrimaryCompanyId を会社 ID として、
    case_createdDate,
    case_TotalExVat as Amount
例から)mb

約。case_primaryCompanyId = mb.companyid  
     そして ca.case_createdDate >= mb.case_CreatedDate

どこ
    ca.case_primaryCompanyId = 会社 ID

グループ化
     case_primaryCompanyId、
     CONVERT(VARCHAR(7),ca.case_createddate, 111)

わかりましたので、上記は以下のようなデータのリストを取得し、それを月と年でグループ化し、時間の始まりからの量を集計します。

日付 実績金額                
2009/10/20 1766.52
2009 年 7 月 11 日 2778.02
2010/01/14 -2700.00
2010/02/28 -78.02

2010/05/27 2489.40
2010/05/27 2491.20
2010/05/30 2494.80

すべてが完璧に機能し、各月の累積値が計算されます。

2010 年 5 月になるまでは、5 月に 1 回ではなく、5 月のレコードごとに移動残高が計算されます (グループ値が変更されたときに 1 回だけではなく)。

移動残高結果

日付表示は
2009/10 1766.52 1766.52
2009/11 2788.02 2788.02
2010/01 78.02 78.02
2010/02 0.00 0.00

2010/05 22426.20 7475.50

sum(distinct mb.Amount) を試しましたが、うまくいきません

どんなアイデアでも本当に感謝します レイチェルに感謝

4

2 に答える 2

0

多くの欲求不満と数週間の髪の引っ張りの直後、

私はついにこの問題を解決しました、

結合を取り出し、選択ステートメントを使用しました


(
選択する
       case_PrimaryCompanyId を会社 ID として、
       CONVERT(VARCHAR(7),case_createddate, 111) AS 日付,
       case_invoicetype を InvoiceType として、
       Sum(case_totalexvat) as Amount
FROM ケース AS ca
どこ  
datediff(m,case_createddate,getDate()) = CONVERT(VARCHAR(7),b.case_createddate, 111) および b.case_primarycompanyid = a.case_primarycompanyid
)前の合計
ケースから
どこ

  CONVERT(VARCHAR(7),a.case_createddate, 111) > Convert(VARCHAR(7), DATEADD(m, -13, current_timestamp), 111)
a.case_primarycompanyid, CONVERT(VARCHAR(7),a.case_createddate, 111) でグループ化

)
日付順、InvoiceType

于 2013-08-15T13:49:09.420 に答える