2

我正在生成一份报告以显示未结费用,例如哪种费用类型,该费用类型的固定金额,该费用类型的已支付金额以及该费用类型的最终余额。

在这里,我从 5 个表中提取数据,例如 Classes 表中的 Class Names、admissions 表中的 Roll no & Student Name、Feevars 表中的 Fee Types、studentfees 表中针对费用类型的固定金额,以及最后从费用收取表中为费用类型支付的金额.

我可以通过加减运算在选择语句中提及费用类型名称来生成部分结果。

这是完整的数据库和我的查询产生的结果。请在选择语句中查看 **@ mysql 查询 ,我已经手动提到了费用类型。但我想生成结果而不提及费用类型作为列名。

为此,我做了一件事,我将所有费用类型都放入了这样的 sql 变量中

set @sqlList = null;SELECT GROUP_CONCAT(concat('tsf.', Replace(FeeName,' ',''))) INTO @sqlList FROM tbl_feevars;

这将导致所有费用类型成为单行作为列名。最后,我编写了代码来产生我所期望的输出,但我收到了错误代码 1064 之类的错误:您的 sql 语法有错误。

这是我的最终代码

预期输出代码

请任何人告诉我,我的 sql 查询中有什么错误。如果有的话建议我?其他方式来做这个报告。

4

1 回答 1

1

你想要的输出是什么?

我已经在这个 didle 中工作了http://www.sqlfiddle.com/#!2/a26c7/15

我认为,@ 不好...此外,您想使用数组...在 MySQL 中没有数组之类的东西您必须使用LOOP来模拟数组或TMP TABLE. 看到这个问题有很好的答案 4u:

如何在 MySQL 中模拟数组变量?

于 2013-08-01T07:21:09.310 回答