有人可以帮我解决这个问题: 所以我有一个名为Orders的表,它有ordernumber,requireddate,shipmentdate列。我需要找出shippingdate和requireddate之间的最多天数,我需要列出ordernumber。
我创建了一个视图,我希望它包含ordernumber和datediff(requireddate,shippeddate)。这是我的代码
create view Numberdays (ordernumber, number_of_days)
as select ordernumber, datediff(requireddate, shippeddate)
from CM_orders
group by ordernumber
但是我的视图只显示了30行表,即使Orders表中有大约300行。 有人可以解释一下我的错误,以及如何查看将显示表中所有行的视图,好吗? 提前谢谢。
答案 0 :(得分:0)
希望我能正确理解你的问题。
我试图创造类似的情况。检查下面的sqlfiddle链接。 从您的创建视图查询中删除了分组
create view Numberdays (ordernumber, number_of_days)
as select ordernumber, datediff(requireddate, shippeddate)
from Orders; -- i think no need to group by if there is not any aggregate function
获取完整的订单号。
答案 1 :(得分:0)
您需要做的是首先找到最大必需品和最小发货日期然后再做日期
CREATE VIEW Numberdays (ordernumber, number_of_days)
AS SELECT ordernumber, datediff(rdate,sdate)
FROM(
SELECT ordernumber, max(requiredate) AS rdate,min(shippeddate) AS sdate
FROM CM_orders
GROUP by ordernumber
)
答案 2 :(得分:-1)
您按订单编号分组。我猜你只有30个订单号,因此只返回了30行。
我建议拆分你的查询并重建它。如果简化它,您可能会发现返回了更多行,从而消除了限制器的可能性。然后按照路径,慢慢地向您的查询中添加片段,缩小返回的数据,直到您获得所需的结果,或者确定限制因素。
这是一个试验和错误的问题来诊断返回意外数据时出现问题,并且没有要测试的数据集,我们几乎无法识别问题。所以我能给你的最好的建议就是把它拿回来简单,然后增加复杂性,直到你发现问题为止。