我有交叉表查询可以返回31天的值,问题是当我执行包含30天的月份查询时遇到以下错误
查询指定的返回元组有n +列,但交叉表返回n。
查询
SELECT * FROM crosstab(SELECT id, present FROM attendance) AS ("id" int,"1" boolean,....."31" boolean)
我希望第31列需要填充null
。
或者是否可以创建类似下面的sql函数并使用它根据length_of_the_month生成所需的列
len_month = 30
counts = 0
CREATE OR REPLACE FUNCTION days_as_column (counts integer, len_month integer)
RETURNS varchar
AS $$
while (counts < len_month):
counts = counts + 1
print '"%s" varchar(10),' % (counts)
$$ LANGUAGE plpythonu;