我有以下查询:
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>1 165 2487 3 1807 表类>
需要聚合。您的查询,就目前而言,返回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;