sql - 同一张表中的 Sum 和 Substract 列
问题描述
我有下表“TableOfDelivery”,有 4 列
我已经制定了一个 SQL 查询(访问 2016)来获得2 个不同报告周的2 个交付周之间的差异:
SELECT TOP 2
t1.ref, t1.[delivery week],
(t2.qty-t1.qty) AS
QtyDifferenceBetween2DeliveryWeekOn2DifferentWeekReporting
FROM
TableOfDelivery AS t1 INNER JOIN TableOfDelivery AS t2 ON (t1.ref = t2.ref)
AND
(t1.[delivery week] = t2.[delivery week] AND (t1.[reporting week] <> t2.
[reporting week]) )
GROUP BY t1.[reporting week], t1.ref, t1.[delivery week], t2.qty-t1.qty
ORDER BY t1.[reporting week];
这是此 SQL 查询的结果:
结果仅适用于匹配的交付周。但我也希望交货周数不匹配,请参见图片以红色和绿色突出显示的线条。
例如,对于红线和绿线,我也应该在结果查询中包含:
有没有办法做到这一点?
非常感谢你
解决方案
您可以尝试使用 aCASE
来获得您想要的。
SELECT t1.ref,
t1.[delivery week],
(t2.qty-t1.qty) AS QtyDiff,
t1.[delivery week],
CASE
WHEN t1.[reporting week] <> t1.[delivery week] THEN t1.qty *-1
ELSE t1.qty
END AS new_qty
FROM TableOfDelivery AS t1
INNER JOIN TableOfDelivery AS t2 ON (t1.ref = t2.ref)
AND (t1.[delivery week] = t2.[delivery week]
AND (t1.[reporting week] <> t2. [reporting week]))
GROUP BY t1.[reporting week],
t1.ref,
t1.[delivery week], (t2.qty-t1.qty),t1.qty
ORDER BY t1.[reporting week];
CASE
检查交货周和报告周之间是否存在差异。如果是这种情况,它会为您提供 qty * -1。
我已经在 postgres 上测试过它,但没有在 msaccess 上测试过,因为我的电脑上没有这个数据库。
推荐阅读
- javascript - 在 Expo Go 中,根组件是否应该一直在重新渲染?
- django - 使用 django-weasyprint 的 PDF 输出不使用 css 文件
- aws-api-gateway - AWS API-Keys 在创建后立即使用时会出现禁止错误
- java - 在 Swagger 中添加其他属性
- c++ - C++ 中的单链表读取的节点不超过 2 个
- android - Android Gradle:每个 buildConfig 和 Flavor 的唯一应用名称
- python - 如何更改 TextBox 对象的标签位置?
- android - 如何防止Android中TextView中的图标换行
- webpack - Webpack 5 静态文件的不同哈希
- reactjs - 如何在react上动态创建表单并一键一键提交