Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 TSQL从子结果集中分配变量以避免重复查询_Sql Server 2008_Tsql_Stored Procedures - Fatal编程技术网

Sql server 2008 TSQL从子结果集中分配变量以避免重复查询

Sql server 2008 TSQL从子结果集中分配变量以避免重复查询,sql-server-2008,tsql,stored-procedures,Sql Server 2008,Tsql,Stored Procedures,有没有一种方法可以在不重复这样的查询的情况下有效地改进下面的代码 注意:在本例中,有已知数量的元素可用于为其分配参数 SELECT @var0 = Field_A FROM Table_0 JOIN Table_1 ON (Table_0.PK = Table_1.FK) WHERE Table_1.PK = 1 AND TABLE_0.Field_B = 1; SELECT @var1 = Field_A FROM Table_0 JOIN Table_1 ON (Table_0.

有没有一种方法可以在不重复这样的查询的情况下有效地改进下面的代码

注意:在本例中,有已知数量的元素可用于为其分配参数

SELECT  @var0 = Field_A FROM Table_0 
JOIN Table_1 ON (Table_0.PK = Table_1.FK) 
WHERE Table_1.PK = 1 AND TABLE_0.Field_B = 1;

SELECT  @var1 = Field_A FROM Table_0 
JOIN Table_1 ON (Table_0.PK = Table_1.FK) 
WHERE Table_1.PK = 1 AND TABLE_0.Field_B = 2;

SELECT  @var2 = Field_A FROM Table_0 
JOIN Table_1 ON (Table_0.PK = Table_1.FK) 
WHERE Table_1.PK = 1 AND TABLE_0.Field_B = 3;
大概是这样的:

SELECT
    @var0 = MAX( CASE table_0.field_b WHEN 1 THEN field_a END )
    , @var1 =   MAX( CASE table_0.field_b WHEN 2 THEN field_a END )
    , @var2 =   MAX( CASE table_0.field_b WHEN 3 THEN field_a END )
FROM 
    table_0
JOIN
    table_1 
    ON 
        TABLE_0.PK = TABLE_1.FK

谢谢,我不认为你需要最大值。聚合(最小值也可以)是因为我们将多行汇总成一行。什么时候然后。。。with no ELSE与ELSE NULL相同。空值随后被聚合屏蔽,在本例中为MAX()。感谢您的解释