子查询返回多个值.TSQL

  • 本文关键字:TSQL 查询 返回 sql tsql
  • 更新时间 :
  • 英文 :

CREATE TABLE sales
(id INT PRIMARY KEY IDENTITY, name VARCHAR(30),
percent_part FLOAT, sales FLOAT, sum_bonus DECIMAL);
CREATE TRIGGER TRcointingBonus ON sales 
AFTER UPDATE 
AS BEGIN
DECLARE @sum_bonus FLOAT;
SELECT @sum_bonus = (SELECT ((sales / 100) * percent_part) FROM  sales);
UPDATE sales SET sum_bonus = @sum_bonus
END;
INSERT INTO sales VALUES('staff1', 7.0, 7088, 1);
INSERT INTO sales VALUES('staff2', 3.5, 20590, 1);
INSERT INTO sales VALUES('staff3', 10.5, 6089, 1);
UPDATE sales SET sales = 7088 WHERE id=1;

我创建了一个表和一个触发器,对于每个UPATE操作,sum_bonus的每一行都会有计算。

问题在

DECLARE @sum_bonus FLOAT;
SELECT @sum_bonus = (SELECT ((sales / 100) * percent_part) FROM sales);

如果删除FROM sales,则写入变量将不可能。能解释原因是什么以及如何在不放弃变量的情况下解决这个问题吗?

您的实际错误非常清楚,您的子查询返回多个值。如果您使用示例数据,并单独运行子查询:

SELECT ((sales / 100) * percent_part) 
FROM  sales

得到3个值:

tbody> <<tr>720.65639.345
(无列名)
496.16

最新更新