문제를 해결하는 데 도움주세요.이전 날짜를 포함한 상품 합계를 계산하는 방법
제대로 작동하지 못하는 경우 상점의 제품 수량을 확인하려면 판매 업체의 모든 제품의 합계를 판매 된 금액 인 에서 공제해야합니다. 전날의 차이와의 차이 - 재고가 남을 것입니다. 문제는 마지막 조건입니다.
지금까지 얻은 것 :
1 - 특정 날짜의 모든 공급 업체의 모든 제품 합계를 계산합니다.
Q2 - 특정 날짜에 판매 된 상품의 금액을 계산합니다. (지출)
Store_1 - 판매 된 제품의 금액은 모든 공급 업체의 모든 제품 합계에서 공제됩니다. (차이)
Store_2 - 전날의 차이 + 차이. 그러나이 수치는 첫 번째 줄을 제외하고 정확하게 계산되지 않습니다. (매장의 잔여 물)
올바른 데이터를 얻는 방법은 무엇입니까? 어디 조건 (특정 날짜 - 1 일?)
날짜는 날짜 변환기를 사용하는 이유입니다.
SELECT Q1.Dat, Q1.Goods AS Q1, Q2.Goods AS Q2, Q1.Goods - Q2.Goods AS Store_1,
(CASE WHEN Q1.Dat <= '2013.01.01' THEN Q1.Goods - Q2.Goods + 330016
ELSE (Q1.Goods - Q2.Goods) + (SELECT SUM (Q1.Goods - Q2.Goods)+330016 FROM Q1, Q2
WHERE particular date – 1 day) END) AS Store_2
FROM
(SELECT TOP 100 PERCENT CONVERT(VARCHAR, DATEADD(s, nb.TEreport.data, 25568), 102) AS Dat,
SUM(nb.TEreport.goods) AS Goods
FROM nb.TEreport INNER JOIN nb.TEprovider ON nb.TEreport.id_provider = nb.TEprovider.id
WHERE (LEFT(nb.TEprovider.name, 10) != 'FROM STORE')
AND (CONVERT(VARCHAR, DATEADD(s, nb.TEreport.data, 25568), 102) <= CONVERT(VARCHAR, GETDATE(), 102))
AND CONVERT(VARCHAR, DATEADD(s, nb.TEreport.data, 25568), 102) >= '2013.01.01'
GROUP BY CONVERT(VARCHAR, DATEADD(s, nb.TEreport.data, 25568), 102)
ORDER BY Dat) Q1 --income
INNER JOIN
(SELECT TOP 100 PERCENT CONVERT(VARCHAR, DATEADD(s, nb.TEreport.data, 25568), 102) AS Dat,
SUM(nb.TEreport.goods) AS Goods
FROM nb.TEreport INNER JOIN nb.TEway ON nb.TEreport.id_way = nb.TEway.id
WHERE (SUBSTRING(nb.TEway.name, 5, 8) != 'TO STORE')
AND (CONVERT(VARCHAR, DATEADD(s, nb.TEreport.data, 25568), 102) <= CONVERT(VARCHAR, GETDATE(), 102))
AND CONVERT(VARCHAR, DATEADD(s, nb.TEreport.data, 25568), 102) >= '2013.01.01'
GROUP BY CONVERT(VARCHAR, DATEADD(s, nb.TEreport.data, 25568), 102)
ORDER BY Dat) Q2 --spending
ON Q1.Dat = Q2.Dat
ORDER BY Q1.Dat
CONVERT 25,567 이전 날짜
(CASE WHEN Q1.Dat <= '2013.01.01' THEN Q1.Goods - Q2.Goods + 330016
ELSE (Q1.Goods - Q2.Goods) + (SELECT SUM (Q1.Goods - Q2.Goods)+330016 FROM Q1, Q2
WHERE CONVERT(VARCHAR, DATEADD(s, nb.TEreport.data, 25567), 102)) END) AS Store_2
입니다 (VARCHAR, DATEADD (S, nb.TEreport.data, 25567), 102)을 사용하려고하지만 오류 메시지가 : 때문에 잘못된 개체 이름 'Q1'잘못된 개체 이름 'Q2'
것 같습니다. 예 : CONVERT (VARCHAR, DATEADD (s, nb.TEreport.data, 25568)? – booyaa