我有两个表:主表和源表。 两个表都有3列。 它们是ID,项目说明和标价。 “源”表的“项目描述”中有一些空值。

我想要做的是将Source表合并到Master中。 但是,如果“源”表中的描述字段为空,则不要更改主表中的描述。

有没有更好的方法可以重写它? 看起来有点重复。这是我的尝试。

    Breakdown:
    1) When matched and if description in source is null, only update id 
       and price
    2) When matched update
    3) Insert into Master table if Source table has new ids



MERGE INTO MASTER AS MS
USING       SOURCE AS SRC
ON        (MS.id = SRC.id)
WHEN MATCHED AND SRC.item_deSRC is NULL THEN
UPDATE SET MS.id = SRC.id
           MS.List_Price = SRC.List_Price
WHEN MATCHED THEN
UPDATE SET MS.id = SRC.id
,          MS.Description = SRC.Description
,          MS.List_Price = SRC.List_Price
WHEN NOT MATCHED THEN
INSERT VALUES(MS.id, MS.description, MS.List_Price)

===============>>#1 票数:3 已采纳

我有两个表:主表和源表。 两个表都有3列。 它们是ID,项目说明和标价。 “源”表的“项目描述”中有一些空值。

我想要做的是将Source表合并到Master中。 但是,如果“源”表中的描述字段为空,则不要更改主表中的描述。

有没有更好的方法可以重写它? 看起来有点重复。这是我的尝试。

    Breakdown:
    1) When matched and if description in source is null, only update id 
       and price
    2) When matched update
    3) Insert into Master table if Source table has new ids



MERGE INTO MASTER AS MS
USING       SOURCE AS SRC
ON        (MS.id = SRC.id)
WHEN MATCHED AND SRC.item_deSRC is NULL THEN
UPDATE SET MS.id = SRC.id
           MS.List_Price = SRC.List_Price
WHEN MATCHED THEN
UPDATE SET MS.id = SRC.id
,          MS.Description = SRC.Description
,          MS.List_Price = SRC.List_Price
WHEN NOT MATCHED THEN
INSERT VALUES(MS.id, MS.description, MS.List_Price)

===============>>#2 票数:0

我有两个表:主表和源表。 两个表都有3列。 它们是ID,项目说明和标价。 “源”表的“项目描述”中有一些空值。

我想要做的是将Source表合并到Master中。 但是,如果“源”表中的描述字段为空,则不要更改主表中的描述。

有没有更好的方法可以重写它? 看起来有点重复。这是我的尝试。

    Breakdown:
    1) When matched and if description in source is null, only update id 
       and price
    2) When matched update
    3) Insert into Master table if Source table has new ids



MERGE INTO MASTER AS MS
USING       SOURCE AS SRC
ON        (MS.id = SRC.id)
WHEN MATCHED AND SRC.item_deSRC is NULL THEN
UPDATE SET MS.id = SRC.id
           MS.List_Price = SRC.List_Price
WHEN MATCHED THEN
UPDATE SET MS.id = SRC.id
,          MS.Description = SRC.Description
,          MS.List_Price = SRC.List_Price
WHEN NOT MATCHED THEN
INSERT VALUES(MS.id, MS.description, MS.List_Price)

  ask by Le_RedditUser translate from so

未解决问题?本站智能推荐:

5回复

有条件的交叉连接

我正在使用交叉联接来重复从数据库输出的行。 我想要一个过滤器,以便仅重复某些值 这就是我到目前为止 这输出为 我将如何执行,但仅在EmployeeID = 20的情况下重复; 结果如下 谢谢!
5回复

基于1个表中的2列有条件地联接到两个不同的表

我有一张看起来像这样的桌子 我需要找出一种方法来说明OverrideQueueID是否为NULL,然后从dbo.Box到dbo.Source.ID进行联接,否则,如果OverrideQueueID不是NULL则加入dbo.Queue.ID。 因为它要连接到不同的表,所以可以一次选择吗?
3回复

如何在有条件的几列上添加唯一约束?

题: 我想在映射表(n:n)上添加唯一约束。 我希望可以插入新值,但前提是TEST_FK_UID,TEST_DateFrom和TEST_DateTo不等于现有条目。 问题是状态字段。 状态1表示活动。 状态!= 1表示未激活/已删除。 。 。 因此,当然可以插
2回复

将现有条件转换为使用T-SQL进行联接

我正在尝试转换以下T-SQL Select查询以排除“存在”子句并包括“加入”子句。 但是我最终没有得到正确的结果。 这个专家小组的一些人可以帮我一些提示。
2回复

有条件地使用TSQL创建存储过程[重复]

这个问题在这里已有答案: 如何在SQL Server中有条件地创建存储过程? 11个答案 我正在编写一个db更新脚本,它基本上从数据库中检索当前版本号,然后在版本有效时创建一些存储过程。 如果当前版本与预期版本不匹配,则应跳过执行代码。 但是当我编写脚本时
4回复

有条件的; SQL Server2008的SQL查询/ TSql

我真的想自己想出这个解决方案,但事实证明这比我想象的更具挑战性。 我试图检索信息的表格看起来就像下面的简单形式。 表:CarFeatures 在SSRS报告中,我需要显示具有给定参数的所有功能的所有车辆。 这将从报告接收参数,如:Nav-yes / no,Bth-yes /
4回复

有没有办法在INSERT..SELECT语句中有条件地使用默认列值?

我在一个将行插入表的存储过程中有类似于以下的代码,我想将最后一列(FieldD)设置为@prmSomeValue,除非它是null,否则只需使用为其定义的默认值柱。 这有效,但违反了DRY原则。 我试图用一个插入语句找到一些方法来做到这一点。 以下伪代码的行。 有人有主意吗?
1回复

根据条件合并行并根据其他条件合并其他行

我在SQL Server中有一张表,看起来像这样: 我需要将其转换为:
1回复

合并多个更新和插入

基本上我有一个SQL Server 2008 R2数据库。 该数据库有一个名为Node和Link的表。 链接包含与节点中的Id相关的StartNodeId和EndNodeId。 数据库还需要节点和链接之间的链接表,以便更快地检查说明,此节点是否与此链接相关或哪些节点与此链接相关。 Lin
1回复

SQL Server 2008合并语句多个匹配条件

我试图以增量方式引入索赔数据。 我在System ( varchar )和ClaimNum ( varchar )上匹配源和目标,并使用其他列的哈希来检查更改。 我有我的合并声明(简化): 但是,我不能有2个匹配条件。 我怎样才能通过合并声明来实现这一目标? 这是在SQL