使用特定的设置条件在Update语句中连接数据集

时间:2014-02-13 17:07:02

标签: sql-server sql-update left-join

我希望任何人都能对这个问题提出任何意见。我有两个完全相同的数据集,但一个比另一个大。基本上,我想查看较小数据集(andrat_appen)中的任何变量是否具有某个值'A'。如果是这种情况,我想更新更大的数据集(“andrat_APP_GENKORR”,完全相同的帖子,基于一些ID变量)与另一个值'AG'。

如果较小数据集中的变量中没有像'A'这样的值,给定ID变量的集合,那么大数据集中的相同单元格就不会发生任何事情。

关于如何解决它的任何建议?

UPDATE A
SET A.[ANDRAT_Vkod] = case when B.[ANDRAT_Vkod] = 'A' then 'AG' else A.[ANDRAT_Vkod] end,
    A.[ANDRAT_timlon] = case when B.[ANDRAT_timlon] = 'A' then 'AG' else [ANDRAT_timlon] end
FROM [dbo].[andrat_APP_GENKORR] A
LEFT JOIN (SELECT EnhetsId, pnr, Etikett FROM [dbo].[andrat_appen]) B
    ON A.EnhetsId = B.EnhetsId AND A.pnr = B.pnr AND A.Etikett = B.Etikett

1 个答案:

答案 0 :(得分:0)

解决了!解决方案是:

UPDATE A
SET A.[ANDRAT_Vkod] = (case when B.[ANDRAT_Vkod] = 'A' then 'AG' else A.[ANDRAT_Vkod] end),
    A.[ANDRAT_timlon] = (case when B.[ANDRAT_timlon] = 'A' then 'AG' else A.[ANDRAT_timlon] end)
FROM [dbo].[andrat_APP_GENKORR] A
LEFT JOIN [dbo].[andrat_appen]) B
ON A.EnhetsId = B.EnhetsId AND A.pnr = B.pnr AND A.Etikett = B.Etikett