sql - 与单个更新语句组合的更新查询

标签 sql sql-server

任何机构都可以建议如何将以下 4 个更新语句变为单个更新语句吗?

update dbo.FACOD set LowValue ='07/02/2010' where Fieldname in ('AYStartDate','Dateloanstart')and AwardYear='2012-13'
update dbo.FACOD set LowValue ='07/02/2011' where Fieldname in ('AYStartDate','Dateloanstart')and AwardYear='2013-14'

update dbo.FACOD set HighValue='06/30/2015' where Fieldname in ('AYEndDate','DateloanEnd')and AwardYear='2012-13'
update dbo.FACOD set HighValue='06/30/2016' where Fieldname in ('AYEndDate','DateloanEnd')and AwardYear='2013-14'

尝试过以下一个

UPDATE  dbo.FACOD
SET     LowValue = CASE WHEN Fieldname in ('AYStartDate','Dateloanstart')and AwardYear='2012-13' THEN '07/02/2010' ELSE LowValue END,
        HighValue = CASE WHEN Fieldname in ('AYEndDate','DateloanEnd')and AwardYear='2012-13'THEN '06/30/2015'ELSE HighValue END,

但它并不能满足所有更新语句。

最佳答案

请尝试:

update 
    dbo.FACOD 
set 
    LowValue=(case when Fieldname in ('AYStartDate','Dateloanstart')and AwardYear='2012-13' then '07/02/2010' 
                    when Fieldname in ('AYStartDate','Dateloanstart')and AwardYear='2013-14' then '07/02/2011' 
                else LowValue end),

    HighValue=(case when Fieldname in ('AYEndDate','DateloanEnd')and AwardYear='2012-13' then '06/30/2015' 
                    when Fieldname in ('AYEndDate','DateloanEnd')and AwardYear='2013-14' then '06/30/2016' 
                else HighValue end)
where 
    Fieldname in ('AYStartDate', 'Dateloanstart', 'AYEndDate', 'DateloanEnd')and 
    AwardYear IN ('2012-13', '2013-14')

关于sql - 与单个更新语句组合的更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18565843/

相关文章:

python - to_sql pandas 数据框进入 SQL 服务器错误 : DatabaseError

mysql - 使用 case 语句更新查询,给出缺少关键字错误

mysql - 根据日期字段分组获取数据

php - 如何在 PHP 中异步执行 MySQL 存储过程

Mysql:我收到此错误:重复条目 ' ' index_name'。

sql - 月末时如何按月分组

c# - 这个简单的更新查询有什么问题?

sql-server - 如何返回一组行中的多个值。

sql - Crystal Reports 交叉表,按数据库字段分组

java - 将 JPA Spring boot 与 SQL Server 结合使用