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

您不能在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
于 2012-12-19T07:39:24.173 回答