使用动态选择mysql存储过程的列
我试图编写一个存储过程,从数据库中提取一些聚合统计数据 我想修改程序,允许动态选择列 我的第一个想法是使用Case或IF语句来选择不同的列使用动态选择mysql存储过程的列,mysql,stored-procedures,query-parameters,Mysql,Stored Procedures,Query Parameters,我试图编写一个存储过程,从数据库中提取一些聚合统计数据 我想修改程序,允许动态选择列 我的第一个想法是使用Case或IF语句来选择不同的列 DELIMITER// CREATE PROCEDURE 'procStats'(IN buySell varchar(4)) SELECT CASE WHEN buySell = 'Buy' THEN AVG(salesTransactions.BuyPrice) AS AveragePrice, WHEN b
DELIMITER//
CREATE PROCEDURE 'procStats'(IN buySell varchar(4))
SELECT
CASE
WHEN buySell = 'Buy' THEN AVG(salesTransactions.BuyPrice) AS AveragePrice,
WHEN buySell = 'Sell' THEN AVG(salesTransactions.SellPrice) AS AveragePrice,
END CASE;
MONTHNAME(salesTransactions.DateOfTransaction) as TransactionMonth
FROM
salesTransactions
GROUP BY
TransactionMonth
LIMIT 6;
END//
现在我不认为案例陈述是为了这个目的,它目前不起作用。。。是否有可能实现上述目标
仅供参考-我完全知道我可以选择这两列,但我不希望将这两列公开给我的web应用。更改此设置
CASE
WHEN buySell = 'Buy' THEN AVG(salesTransactions.BuyPrice) AS AveragePrice,
WHEN buySell = 'Sell' THEN AVG(salesTransactions.SellPrice) AS AveragePrice,
END CASE;
到
最后应该是这样的:
DELIMITER//
CREATE PROCEDURE procStats (IN buySell varchar(4))
BEGIN
SELECT
CASE buySell
WHEN 'Buy' THEN AVG(salesTransactions.BuyPrice)
WHEN 'Sell' THEN AVG(salesTransactions.SellPrice)
END AS AveragePrice,
MONTHNAME(salesTransactions.DateOfTransaction) as TransactionMonth
FROM
salesTransactions
GROUP BY
TransactionMonth
LIMIT 6;
END//
我修正了一些语法错误。您好,谢谢您的建议。我担心这就是答案。考虑到所有需要更改的只有一列(一行代码)哦,这看起来很好。。。我将有一个游戏,并标记正确的答案,一旦我得到它的工作。谢谢你的帮助。@Gravy还有什么问题吗?请随便问。
DELIMITER//
CREATE PROCEDURE procStats (IN buySell varchar(4))
BEGIN
SELECT
CASE buySell
WHEN 'Buy' THEN AVG(salesTransactions.BuyPrice)
WHEN 'Sell' THEN AVG(salesTransactions.SellPrice)
END AS AveragePrice,
MONTHNAME(salesTransactions.DateOfTransaction) as TransactionMonth
FROM
salesTransactions
GROUP BY
TransactionMonth
LIMIT 6;
END//