SQL报表过滤,结果在第一个项目后停止

时间:2018-12-06 17:46:10

标签: sql filter reporting

,谢谢。我是新手,正在撰写我的第一份报告。我有订单,有一个终端分配给他们(“ DC”)。该报告设置为返回所有未结订单,“ DC”以及其他一些列(驱动程序编号,城市等)。我制作了一个下拉过滤器以使用,因此我可以查看一个,几个或所有DC。我的问题是,它停止照顾下拉列表中选中的第一个项目。因此,如果列表中的第一个项目有100个订单,但其余的有数千个,则只会显示100个订单。我在这里有意义吗?我不确定报告设置中的哪些信息与此处相关。

这是报表所基于的查询。使用SQL Report Builder。

SELECT
o.OrderTrackingID,
cm.accountno,
o.ClientRefNo,
o.DCoName,
o.DStreet,
o.DCity,
o.DState,
o.DZip,
o.DZone,
t.TerminalName as 'OrderDC',
e.LastName as 'DrvLast',
e.FirstName as 'DrvFirst',
e.DriverNo,
et.TerminalName as 'DriverDC'
FROM Orders o
FULL JOIN OrderDrivers od ON o.OrderTrackingID = od.OrderTrackingID
FULL JOIN Employees e ON od.DriverID = e.ID
FULL JOIN ClientMaster cm ON o.ClientID = cm.ClientID
FULL JOIN Terminals t ON o.TerminalID = t.TerminalID
FULL JOIN Terminals et ON e.TerminalID = et.TerminalID
WHERE o.Status = 'N'
Order By o.aTimeStamp ASC

1 个答案:

答案 0 :(得分:0)

(我将其写为答案,即使它不是一个完整的答案,主要是因为评论字段有限。)

在您发布的SQL中,以下内容是错误的

FULL JOIN Terminals t ON o.TerminalID = t.TerminalID
FULL JOIN Terminals et ON e.TerminalID = et.TerminalID

您要两次连接同一张表,但是并不能将两个连接分开,这就是我的猜测,为什么您的报表中没有更多的订单。

我现在不知道下拉列表所对应的内容,但我认为它是Terminals表中的某种标识符。

从纯SQL的角度来看,我希望这样的事情

FULL JOIN Terminals t ON o.TerminalID = t.TerminalID
WHERE t.someColumn IN (value1, value2)

其中value1和value2来自下拉列表。

我在您选择的部分中看到,您在两个Terminals JOIN中都包含同一列,并且我希望这两列始终具有相同的值。您应该只在选择列表中一次需要该列。

不是解决方案,但也许可以使您朝正确的方向前进。