問題の解決にご協力ください。
正常に機能するように要求できません。ストア内の商品の数量を取得するために、販売した商品の量からすべてのサプライヤーからのすべての製品の合計を差し引き、差額を差額に加算する必要があります。前日~残り在庫となります。問題は最後の条件にあります..
私が今持っているもの:
Q1 - 特定の日付のすべてのサプライヤーからのすべての製品の合計を計算します。(収入)
Q2 - 特定の日付に販売された商品の量を計算します。(spending)
Store_1 - 販売された商品の金額は、すべてのサプライヤーからのすべての商品の合計から差し引かれます。(差分)
Store_2 - 差分 + 前日の差分。ただし、これらの数値は、最初の行を除いて正しく計算されていません。(残りは在庫あり)
正しいデータを取得するにはどうすればよいですか? WHERE 条件 (特定の日付 – 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(VARCHAR, DATEADD(s, nb.TEreport.data, 25567), 102)を使用しようとしました 25567 は前の日付です
(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
しかし、エラー メッセージが表示されます: 無効なオブジェクト名 'Q1'、無効なオブジェクト名 'Q2'