동일한 테이블에서 내부 조인을 사용하는 쿼리를 사용하여 균형을 계산합니다. 나는 이것을 위해 파티션을 사용하고 있습니다. 밸런스 값에 따라 일부 날짜가 공제됩니다.SQL Server 하위 쿼리 내부 조인에서 하나의 열을 기반으로 다른 열 값을 정의하는 방법은 무엇입니까?
내 쿼리는 정상적으로 작동하지만 문제가 있습니다. 마지막 날에 조인의 균형 일 수가 0 인 경우 모든 동일한 열 (내부 조인이 기반으로하는 열)이 0이어야합니다.
내가 필요로하는 말에 가 0이기 때문에이 경우, BrojDok = 648
를 들어, 나는 BalanceDays
FinID = 5856
을 위해 필요하다는 것입니다 :
이
내가 지금까지 가지고있는 결과입니다 또한 0이됩니다.어떻게 든 이런 짓을 했을까 다른 열을 계산할 수 있습니다
나는 이런 식으로 뭔가를 좀하고 싶습니다?
업데이트 방법을 찾고 있었지만 아무 것도 할 수 없었습니다.
이 지금까지 내 쿼리입니다 : 마지막에 BalanceTotal가 0이기 때문에 또한 제로로
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