0

どのように私はどのように入力することができますケースで宣言するとき、各行のため
に私は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
4

1 に答える 1

2

に値を割り当てることはできませんcaseCase値のみを返すことができます。

代わりにこのようなものを使用できます。

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
于 2012-12-19T07:39:24.173 に答える