SQL更新"多个结果"

2020-09-23 06:37发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好

ive尝试使用谷歌搜索答案,但很不幸。

真的希望得到您的帮助。

我有一个名为 ODLN 的交货通知表,在该表中,我有2个字段:" line "和" name "

我有一个名为dbo的用户​​定义表。 @ 驱动程序,其中有两列: drivers.lines drivers.names

im试图创建一个SQL作业,该作业将影响所有应于明天( odln.DocDueDate = getdate()+ 1 )提交的文档(odln),并将更新其字段:< strong>名称,其值来自 @ Drivers 表中的 drivers.names 字段。 根据两个 line 字段的相似性。

例如-在上述情况下。 doc 548567将在"名称"字段中获得"乔治"。 548548文档将获得"丹尼尔",而548568文档将获得"大卫"。

有人告诉我尝试一下:

更新ODLN设置名称=(SELECT [dbo]。[@ drivers]。来自[dbo]的名称。[@ drivers]内部在[dbo]上加入ODLN。[@ drivers] .Lines = ODLN.Line

ODLN.DocEntry IN(从ODLN中选择DocEntry,其中ODLN.docduedate> getdate()))

WHERE ODLN.DocDueDate> getdate()

但这最终导致"多个结果"错误。

111.jpg (15.5 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好

ive尝试使用谷歌搜索答案,但很不幸。

真的希望得到您的帮助。

我有一个名为 ODLN 的交货通知表,在该表中,我有2个字段:" line "和" name "

我有一个名为dbo的用户​​定义表。 @ 驱动程序,其中有两列: drivers.lines drivers.names

im试图创建一个SQL作业,该作业将影响所有应于明天( odln.DocDueDate = getdate()+ 1 )提交的文档(odln),并将更新其字段:< strong>名称,其值来自 @ Drivers 表中的 drivers.names 字段。 根据两个 line 字段的相似性。

例如-在上述情况下。 doc 548567将在"名称"字段中获得"乔治"。 548548文档将获得"丹尼尔",而548568文档将获得"大卫"。

有人告诉我尝试一下:

更新ODLN设置名称=(SELECT [dbo]。[@ drivers]。来自[dbo]的名称。[@ drivers]内部在[dbo]上加入ODLN。[@ drivers] .Lines = ODLN.Line

ODLN.DocEntry IN(从ODLN中选择DocEntry,其中ODLN.docduedate> getdate()))

WHERE ODLN.DocDueDate> getdate()

但这最终导致"多个结果"错误。

111.jpg (15.5 kB)
付费偷看设置
发送
7条回答
路亽曱_Ryan
1楼 · 2020-09-23 07:25.采纳回答

大卫,您好,

出于好奇,为什么只更新明天到期的文档,为什么不简单地全部更新呢?

对于您的问题:您应该知道GETDATE()同时返回日期和实际时间,而DocDueDate包含日期和时间00:00:00。 这意味着,根据一天中运行查询的时间,结果可能会有所不同。

也就是说,请尝试以下操作:

更新[@OTTR]
 设置名称=(从[dbo]中选择d.U_Names。[@ drivers] d d.U_Lines = U_Line)
 DATEDIFF(DAY,CAST(FLOOR(CAST(GETDATE()AS FLOAT))AS DATETIME),[U_DocDueDate])= 1 

请注意,我对用户定义表中字段的名称做了一些假设,因此您可能需要对其进行编辑。

此致

Johan

樱桃小丸子0093
2楼-- · 2020-09-23 07:33

非常感谢您的帮助。!!!

它起作用了:)

Bunny_CDM
3楼-- · 2020-09-23 07:23

您好科姆

首先,我想问问表 ODLN 是您创建的还是 SAP Business One 交货单中的表?/em>。

如果是SAP Business One表,则不允许在SAP Business One表上使用直接DML语句。

有关修改SAP Business One数据的准则的更多信息,您可以参考以下博客:

修改SAP业务的指南 一个数据

亲切的问候,

ANKIT CHAUHAN

SAP SME支持

野沐沐
4楼-- · 2020-09-23 07:31

hi

我只是想让我的问题尽可能清楚,所以我在帖子中使用了ODLN表,这样人们就可以理解im问的基本概念。 我认为比只谈论自己创建的表要容易理解。

如果重要的话。 我的桌子叫@OTTR(就像我上面写的一样)

另一个表是@ Drivers

我想了解的唯一一件事是如何使用基于其他值相似性的值更新表。

含义-文档X的"行"编号为1-因此它将获得写在DRIVERS表中的驱动程序名称,并且在" drivers.lines"中也具有" 1"

clever101
5楼-- · 2020-09-23 07:11

感谢您的回复!

当然是我创建的表格。

我创建了几个表,试图在它们上使用这些SQL作业。

我的目的仅仅是使我们每天在这里执行的更多操作自动化。

为了便于讨论,我还有一个名为OTTR的表和一个名为ODLC的表,我还需要使用相同类型的" sql作业"查询对其进行编辑

我只是不明白如何正确地编写它。

Cikesha
6楼-- · 2020-09-23 07:35

日期实际上是我所关心的最不相关的部分。

但是你走了-那就是我拥有的数据的一个例子..

再次

" ODLN"只是为了我在这里的解释。它甚至不是试图更新的真实表。 桌子叫做OTTR,但我认为它会让人们感到困惑。

事实证明,这让我更加困惑:P

宇峰Kouji
7楼-- · 2020-09-23 07:13

嗨,亚当,

在屏幕快照中

提及" DocDueDate" 列,并显示其中的值。

亲切的问候,

ANKIT CHAUHAN

SAP SME支持

一周热门 更多>