根据行填充多个变量

时间:2013-12-06 00:13:07

标签: sql sql-server tsql

我有以下变量

  Declare @test1 int,
            @test2 int,
            @test3 int

有没有办法根据表中的行填充上面的变量?目前我正在这样做。

select @test1 = value from tables where somecode = 'test1'
select @test2 = value from tables where somecode = 'test2'
select @test3 = value from tables where somecode = 'test3'

有更好的方法吗?即在一个单一的选择陈述中?

这样的事情有可能吗?

SELECT @test1 = CASE code WHEN 'test1' THEN value END,
       @test2 = CASE code WHEN 'test2' THEN value END
  FROM myTable

1 个答案:

答案 0 :(得分:1)

    select
    @test1 = max(case when <testcolumn> = 'test1' then col1 else null end),
    @test2 = max(case when <testcolumn> = 'test2 ' then col2 else null end),
    ...
    from
    <your table>
    where
   test column in ('test1','test2')

根据您的数据,您可能需要选择不同的或某种类型的聚合才能使其完全正确。

SQL Fiddle