簡體   English   中英

不更新 IIF 的更新語句

[英]Update statement with IIF not upading

我有一個帶有訂單號、文章號和排名的簡單表格:

select * from tbl_temp_ranked

在此處輸入圖像描述

我只想用 rank=2 更新另一個表。 所以我使用以下更新語句

update hbs
set hbs.[2ND_NEXT_ORDER_Nr]=iif(ranked=2, ranked, null)
from TBL_HAKA_BASE_STAGE hbs
join tbl_temp_ranked tmp
on hbs.artikelnummer=tmp.artikelnummer
where hbs.Artikelnummer=115996

我的目標表(TBL_HAKA_BASE_STAGE)永遠不會更新。 它只在我寫的時候更新

iif(ranked=1, ranked, null)

只有在這種情況下,我的目標表才會更新! ranked<>1ranked>1ranked!=1ranked=2不會更新我的表格。 SET -Statement 中的 when -conditions 的case when相同。 鑄造也沒有幫助!

我可以在我的WHERE語句中添加這個條件,這有幫助,是的,但是這個簡短的 SQL 示例只是一個大語句中的一個非常短的代碼,所以這對我來說不是一個很好的解決方案。 這會讓我一遍又一遍地重復所有代碼。

這是兩個表的結構,也許有幫助

CREATE TABLE [dbo].[tbl_temp_ranked](
    [auftragsnummer] [float] NULL,
    [artikelnummer] [float] NULL,
    [ranked] [bigint] NULL
)

CREATE TABLE [dbo].[TBL_HAKA_BASE_STAGE](

    [Artikelnummer] [float] NULL,
    [NEXT ORDER Nr] [float] NULL
) 

它是 SQL 服務器 2017。

您在“排名”表中有重復項。 我想你想要一個left join

update hbs
    set hbs.[2ND_NEXT_ORDER_Nr] = tmp.ranked
    from TBL_HAKA_BASE_STAGE hbs left join
         tbl_temp_ranked tmp
         on hbs.artikelnummer = tmp.artikelnummer and tmp.ranked = 2
    where hbs.Artikelnummer = 115996;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM