【问题标题】:SQL report filtering, results stop after first itemSQL 报表过滤,结果在第一项之后停止
【发布时间】:2018-12-06 17:46:09
【问题描述】:

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

这是报告所基于的查询。使用 SQL 报表生成器。

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

【问题讨论】:

  • 报告基于上述查询
  • 将该查询添加到您的问题中。这个问题是关于sql还是一些报告工具,我不清楚?
  • 您的报表工具是否有某种行限制设置?
  • 不,它没有。我不确定我会知道在哪里寻找那个。

标签: sql filter reporting


【解决方案1】:

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

在您发布的 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 的同一列,我希望这两列始终具有相同的值。您应该在选择列表中只需要该列一次。

不是一个解决方案,但也许这可以让你朝着正确的方向前进。

【讨论】:

  • 我会玩这个。听起来很合乎逻辑。作为背景解释,员工终端是分配给司机的终端,而订单终端是分配订单帐户的地方。它们不一定相同。因此加入。我很感激你的建议。谢谢。
猜你喜欢
  • 2017-06-04
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
相关资源
最近更新 更多