私は最初はすばらしい仕事をしていたSQLコードを持っていましたが、その後CASEに新しい項目を追加しなくてはなりませんでした。計算。私は完成した日付でグループ化したいとは思っていませんが、それはちょうどケースのためですが、私はそれを持っていなければ私のコードが爆発します。SQLは完全にGROUP BYではありません
EDIT:元のコードはうまくいきましたが、完了日を追加してCASEを追加しなければならなかったので、GROUP BYに追加しないとエラーになりました。元のコードと同じようにグループ化します。 このコードが行うことは、他のテーブルからの情報の束をとって、誰かがどれくらい借りているか、誰かがどれくらい支払って差額を吐き出すかを計算します。
動作しないオリジナルのコード
INSERT INTO #ThisReportAll (CustomerID,Year,OverdueBalance,YearSetupId)
SELECT t.CustomerId, ys.Name AS Year,SUM(t.TtlSpeciesCost) - Isnull(cp.TtlPayments,0) + Isnull(ba.Amount,0)
AS TtlOwnerCost, t.YearSetupId AS YearSetupId
FROM #TotalAnimalCostAll t
LEFT JOIN #CustomerPaymentsAll cp ON t.CustomerId=cp.CustomerID
LEFT JOIN YearSetup ys ON t.YearSetupId = ys.YearSetupId
LEFT JOIN #BalanceAdjustmentsAll ba ON t.CustomerId=ba.CustomerID
GROUP BY t.CustomerId,ys.Name,cp.TtlPayments, ba.Amount, t.YearSetupId
新しいコードすべて私はあなたにもなくで、新しいコードでt.Complete
によってグループ化されて見る方法
INSERT INTO #ThisReportAll (CustomerID,Year,OverdueBalance,YearSetupId)
SELECT t.CustomerId, ys.Name AS Year,
CASE
WHEN SUM(t.TtlSpeciesCost) < 5 AND t.Complete < CONVERT(DATE,'01-01-2017')
THEN (5) - Isnull(cp.TtlPayments,0) + Isnull(ba.Amount,0)
ELSE SUM(t.TtlSpeciesCost) - Isnull(cp.TtlPayments,0) + Isnull(ba.Amount,0)
END
AS TtlOwnerCost, t.YearSetupId AS YearSetupId
FROM #TotalAnimalCostAll t
LEFT JOIN #CustomerPaymentsAll cp ON t.CustomerId=cp.CustomerID
LEFT JOIN YearSetup ys ON t.YearSetupId = ys.YearSetupId
LEFT JOIN #BalanceAdjustmentsAll ba ON t.CustomerId=ba.CustomerID
GROUP BY t.CustomerId,ys.Name,cp.TtlPayments, ba.Amount, t.YearSetupId, t.Complete
私はあなたがコードが何をすべきかを説明することをお勧めします。サンプルデータと望ましい結果が役立ちます。動作していないコードは、必ずしもコミュニケーションの意図において良い仕事をしません。 –
さて、あなたのグループにt.Completeを追加しました。したがって、同じグループ化ではありません... –
SELECTカラム式の 'CASE'は、同じSELECTの' GROUP BY'に影響を与えることはできません( 'GROUP BY'も編集されていない限り)。この場合、あなたは 'GROUP BY'を編集しました。これはその動作を変更したものです。 – RBarryYoung