【发布时间】:2020-12-03 22:24:59
【问题描述】:
我正在尝试运行查询以收集我们数据库中手头的全部项目。但是,我似乎得到了不正确的数据。我选择仅选择金额字段并使用基于某些参数的单独表中的联接对其求和,但是如果我显示其他字段(例如订单号和日期),我会突然获得不同的数据,即使这些字段正在使用作为查询中的过滤器。是不是因为它不在select语句中?如果需要在select语句中可以不显示吗?
这是两个查询。
-- Items On Hand
select CONVERT(decimal(25, 2), SUM(tw.amount)) as 'Amt'
from [Sales Header] sh
join
(
select *
from TWAllOrders
where [Status] like 'Released'
) tw
on tw.[Order Nb] = sh.No_
join
(
select *
from OnHand
) oh
on tw.No_ = oh.[Item No_]
where sh.[Requested Delivery Date] < getdate()
HAVING SUM(tw.Quantity) <= SUM(oh.Qty)
提供总和为 21667457.20
以及添加的列
-- Items On Hand
select CONVERT(decimal(25, 2), SUM(tw.amount)) as 'Amt', [Requested Delivery Date], sh.No_, tw.[Status]
from [Sales Header] sh
join
(
select *
from TWAllOrders
where [Status] like 'Released'
) tw
on tw.[Order Nb] = sh.No_
join
(
select *
from OnHand
) oh
on tw.No_ = oh.[Item No_]
where sh.[Requested Delivery Date] < getdate()
group by sh.[Requested Delivery Date], sh.No_, tw.[Status]
HAVING SUM(tw.Quantity) <= SUM(oh.Qty)
order by sh.[Requested Delivery Date] ASC
提供 12319998 的总和
我是自学 SQL,所以我可能会误解一些明显的东西,感谢您的帮助。
【问题讨论】:
-
您在后者中有一个
GROUP BY,因此HAVING中的过滤会有所不同。另外,我希望后一个查询中有多行
标签: sql sql-server