如何为每个行填写声明 当我使用Sql下面的代码时,说'='附近的语法不正确 例如:
Declare @Key1 nvarchar(100)
Declare @Key2 nvarchar(100)
Declare @Key3 nvarchar(100)
Declare @Key4 nvarchar(100)
Select
Case
When A.K = 'Key1' Then @Key1 = A.V
When A.K = 'Key2' Then @Key2 = A.v
When A.K = 'Key3' Then @Key3 = A.v
When A.K = 'Key4' Then @Key4 = A.v
End
From
(
Select Left(col, CHARINDEX(':',col) - 1) AS K, Right(col, Len(col) - CHARINDEX(':',col)) AS V
From
( VALUES
( 'Key1:Test1' ),
( 'Key2:Test2' ),
( 'Key3:Test3' ),
( 'Key4:Test4' ) ) AS col ( col )
) As A
答案 0 :(得分:2)
您无法在case
中指定值。 Case
只能返回一个值。
你可以改用这样的东西。
declare @Key1 nvarchar(100)
declare @Key2 nvarchar(100)
declare @Key3 nvarchar(100)
declare @Key4 nvarchar(100)
select
@Key1 = P.Key1,
@Key2 = P.Key2,
@Key3 = P.Key3,
@Key4 = P.Key4
from
(
select left(col, CHARINDEX(':',col) - 1) as K,
right(col, Len(col) - CHARINDEX(':',col)) as V
from
( values
( 'Key1:Test1' ),
( 'Key2:Test2' ),
( 'Key3:Test3' ),
( 'Key4:Test4' ) ) as col ( col )
) as A
pivot (min(A.V) for A.K in (Key1, Key2, Key3, Key4)) as P