我有一个有效的sql语句,如下所示:
SELECT SUM(CASE WHEN faell_art='monatlich' THEN betrag*12 END) + SUM(CASE WHEN faell_art='vierteljährlich' THEN betrag*4 END) + SUM(CASE WHEN faell_art='halbjährlich' THEN betrag*2 END) + SUM(CASE WHEN faell_art='jährlich' THEN betrag END) as total FROM banking
现在我想创建一个完全相同的生成列。我试过这句话:
ALTER TABLE `banking` ADD `test` DECIMAL(10,2) AS (SUM(CASE WHEN faell_art='monatlich' THEN betrag*12 END) + SUM(CASE WHEN faell_art='vierteljährlich' THEN betrag*4 END) + SUM(CASE WHEN faell_art='halbjährlich' THEN betrag*2 END) + SUM(CASE WHEN faell_art='jährlich' THEN betrag END)) AFTER `kommentar`;
然而它不起作用(“#1901 - 列'test'不允许使用函数或表达式。”。
有任何帮助吗?谢谢: - )
答案 0 :(得分:0)
有一个限制:
子查询或依赖于行外数据的任何内容都不是 允许(这些不是确定性的,因为基础数据可以 变化)。
所有聚合函数(SUM,...)都与表中的其他记录一起使用。
因此,无法创建生成的列。或者,您可以创建一个视图。