私は、同じテーブルの内部結合を使用していくつかのバランスを計算するクエリを持っています。私はこのためにパーティションを使用しています。バランスの値によっては、いくつかの日付を減算しています。SQL Serverサブクエリ内部結合の1つの列に基づいて他の列値を定義する方法は?
私のクエリは問題なく動作しますが、問題があります。最後に結合の平衡日をゼロにする場合、同じBrojDoK
(内部結合の基になる列)のすべての列がゼロになる必要があります。
これは私がこれまで持っているものの結果である:私は必要なもの
は終わりが0であるため、この場合には、BrojDok = 648
のために、私はFinID = 5856
ためBalanceDays
が必要だということですまたゼロになる。
私は何とかこれを行うだろう別の列を計算することができます。
私はこのような何かを取得したいのでしょうか?
私は更新方法を探していましたが、何もすることができませんでした。
これは、これまでのところ、私のクエリです:
SELECT
S2.FinID, S2.Firma, S2.Konto, S2.Partner,
S2.BrojDok, S2.DatumVal, S2.pot, S2.dug,
S2.Balance, S2.BalanceTotal,
IIF(S2.BalanceTotal > 0,
IIF(S2.BalanceTotal < 1, DATEDIFF(DAY, S2.MinDate, S2.MaxDate),
DATEDIFF(DAY, S2.DatumVal, GETDATE())),
IIF(S2.BalanceTotal = 0, 0, 0)) AS BalanceDays
FROM
(SELECT
S1.FinID, S1.Firma, S1.NazFirme, S1.Konto, S1.NazivKonta,
S1.Partner, S1.NazivPartnera, S1.BrojDok, S1.DatumVal,
S1.pot, S1.dug, S1.Balance, S1.MaxDate, S1.MinDate,
SUM(S1.Balance) OVER (PARTITION BY S1.BrojDok ORDER BY S1.FinID) AS BalanceTotal
FROM
(SELECT
t1.FinID, t1.Firma, t1.NazFirme, t1.Konto, t1.NazivKonta,
t1.Partner, t1.NazivPartnera, t1.BrojDok, t1.DatumVal,
SUM(t1.Duguje) AS dug, SUM(t1.Potrazuje) AS pot,
SUM(IIF(t1.[Konto] LIKE '2%', t1.[Duguje] - t1.[Potrazuje], t1.[Potrazuje] -t1.[Duguje])) AS Balance,
MAX(t2.DatumVal) AS MaxDate,
MIN(t2.DatumVal) AS MinDate
FROM
tblFinansijskiPodaci t1
INNER JOIN
tblFinansijskiPodaci t2 ON t1.BrojDok = t2.BrojDok
WHERE
t1.Firma = 1 AND t1.Konto = 2040 AND t1.Partner = 1102
AND t2.Firma = 1 AND t2.Konto = 2040 AND t2.Partner = 1102
GROUP BY
t1.FinID, t1.Firma, t1.NazFirme, t1.Konto, t1.NazivKonta,
t1.Partner, t1.NazivPartnera, t1.BrojDok, t1.DatumVal) AS S1
) AS S2
ORDER BY
BrojDok
私はそれを行う方法を見当もつかない.. – Alexander