我有两张桌子Test1
和Corr_table
Test1 表创建脚本:
CREATE TABLE [dbo].[Test1](
[id] [bigint] NOT NULL,
[Country] [varchar](3) NULL,
[PeriodKey] [varchar](max) NULL,
[a] [varchar](3) NULL,
[b] [varchar](3) NULL,
[c] [varchar](3) NULL
)
Test1
数据:
id Country PeriodKey a b c
1 E 201201 1 5 9
1 E 201202 1 5 9
3 G 201203 3 7 11
4 H 201204 4 8 12
Corr_table
创建脚本:
CREATE TABLE [dbo].[corr_table](
[Country] [varchar](5) NULL,
[id] [bigint] NULL,
[Field] [varchar](10) NULL,
[Value] [varchar](50) NULL,
[Start_date] [varchar](50) NULL,
[End_date] [varchar](50) NULL
)
corr_table
数据:
Country id Field Value Start_date End_date
E 1 a 4 201201 201202
E 1 b 6 201201 201202
现在,如果我写这个查询,
select
a = case when x.Field = 'a' then x.value else a end,
b = case when x.Field = 'b' then x.value else b end,
y.*
from
dbo.Test1 y,dbo.corr_table x
where
y.id = 1
and y.Country = 'E'
and y.PeriodKey in (201201)
它给出以下结果:
a b id Country PeriodKey a b c
4 5 1 E 201201 1 5 9
1 6 1 E 201201 1 5 9
而我期待以下结果:
a b id Country PeriodKey a b c
4 6 1 E 201201 1 5 9
为什么两列都没有在一行中更新?一次它只更新一列,但应该同时更新两列
即 a 应该是 4,b 应该是 6 in a single row 。但是只更新了一个,这是为什么呢?