問題の解決にご協力ください。
2 つのクエリの違いを計算できる適切な作業要求を作成できません。
ストア内の商品の数量を取得するには、すべてのサプライヤーからのすべての商品の合計から販売された商品の量を差し引く必要があります。
2 つの個別のクエリがあります。
1. まず、すべてのサプライヤーからのすべての製品の合計を計算します。
SELECT CONVERT(VARCHAR, DATEADD(s, nb.TEreport.dat, 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.dat, 25568), 102) <= CONVERT(VARCHAR, GETDATE(), 102))
AND CONVERT(VARCHAR, DATEADD(s, nb.TEreport.dat, 25568), 102) >= '2013.01.01'
GROUP BY CONVERT(VARCHAR, DATEADD(s, nb.TEreport.dat, 25568), 102)
ORDER BY Dat DESC
2. 次に、販売された商品の金額を計算します。
SELECT CONVERT(VARCHAR, DATEADD(s, nb.TEreport.dat, 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.dat, 25568), 102) <= CONVERT(VARCHAR, GETDATE(), 102))
AND CONVERT(VARCHAR, DATEADD(s, nb.TEreport.dat, 25568), 102) >= '2013.01.01'
GROUP BY CONVERT(VARCHAR, DATEADD(s, nb.TEreport.dat, 25568), 102)
ORDER BY Dat DESC
サブクエリを実行しようとしましたが、実際に必要なものではありません
。たとえば、
SELECT CONVERT(VARCHAR, DATEADD(s, nb.TEreport.dat, 25568), 102) AS Dat,
(SELECT SUM(nb.TEreport.weight)
FROM nb.TEreport
INNER JOIN nb.TEprovider ON nb.TEreport.id_provider = nb.TEprovider.id
WHERE LEFT(nb.TEprovider.name, 10) != 'FROM STORE')-
(SELECT SUM(nb.TEreport.weight)
FROM nb.TEreport
INNER JOIN nb.TEway ON nb.TEreport.id_way = nb.TEway.id
WHERE SUBSTRING(nb.TEway.name, 5, 8) != 'TO STORE')
FROM nb.TEreport
WHERE CONVERT(VARCHAR, DATEADD(s, nb.TEreport.dat, 25568), 102) <= CONVERT(VARCHAR, GETDATE(), 102)
AND CONVERT(VARCHAR, DATEADD(s, nb.TEreport.dat, 25568), 102) >= '2013.01.01'
GROUP BY CONVERT(VARCHAR, DATEADD(s, nb.TEreport.dat, 25568), 102)
ORDER BY Dat ASC
ただし、この場合、クエリは特定の日の特定の金額を提供するのではなく、その期間のすべての数値の合計を提供するだけです。どうすれば問題を解決できますか?
PS Date は秒単位で保存されるため、 date converter を使用しました。