MSSQL中的Conver MySQL程序

时间:2016-12-22 04:36:55

标签: mysql sql-server

DROP PROCEDURE IF EXISTS amount_in_stock;
CREATE PROCEDURE amount_in_stock( @id INT)
AS
BEGIN
SET NOCOUNT ON;
  SELECT drugs.name, SUM(arrivals.amount) AS Amount_arived, SUM(realization.amount) AS Amount_realized, SUM(arrivals.amount) - SUM(realization.amount) AS amount_in_stock
  FROM drugs
  JOIN arrivals ON drugs.id_drug = arrivals.id_drug
  JOIN realization ON drugs.id_drug = realization.id_drug
  WHERE drugs.id_drug = @id;
END; 
 GO

我将mysql代码转换为mssql但有错误

  

列drug.name不允许

请帮我解决此错误。

1 个答案:

答案 0 :(得分:0)

在WHERE子句之后添加Group by drugs.name

所以你的程序将是

DROP PROCEDURE IF EXISTS amount_in_stock;
CREATE PROCEDURE amount_in_stock( @id INT)
AS
BEGIN
SET NOCOUNT ON;
  SELECT drugs.name, SUM(arrivals.amount) AS Amount_arived, SUM(realization.amount) AS Amount_realized, SUM(arrivals.amount) - SUM(realization.amount) AS amount_in_stock
  FROM drugs
  JOIN arrivals ON drugs.id_drug = arrivals.id_drug
  JOIN realization ON drugs.id_drug = realization.id_drug
  WHERE drugs.id_drug = @id
  GROUP BY drugs.name
  ;
END; 
 GO

您不能使用不在GROUP BY或不在聚合函数中的列,而不是常量以及SUM, AVG, MAX等聚合函数。