在一次选择中分配多个变量



我有以下查询:

SELECT
ROW_NUMBER() OVER(ORDER BY A.Price) AS R,
A.Price
FROM 
TableA A
INNER JOIN 
TableB B ON A.ID = B.ID
INNER JOIN 
TableC C ON C.Code = A.Code
WHERE
C.Type = 125
AND A.Desc = 10000038
AND C.YearID = 10000021
GROUP BY 
A.Price

查询返回

<表类>R价格tbody><<tr>1165248731807

需要聚合。您的查询,就目前而言,返回3行,这意味着变量被分配值3次。它的顺序也是任意的,但可能是@a首先被赋值为165,然后是NULL,然后是NULL

如果您进行聚合,您可以返回一个行,然后分配将按照您的期望工作;每个变量被赋1个值(而不是3个):

SELECT @a = MAX(CASE WHEN [R] = 1 THEN P.[Price] END),
@b = MAX(CASE WHEN [R] = 2 THEN P.[Price] END),
@c = MAX(CASE WHEN [R] = 3 THEN P.[Price] END)
FROM P;

相关内容

  • 没有找到相关文章

最新更新