我想基于一些变量创建报告,其中一个变量是一年中的几个月。我想创建一个只包含所需期间的临时表。这就是我想出的:
我遇到麻烦的部分放在<<<<和>>
DO $$
DECLARE myPeriodFrom INTEGER := 7;
DECLARE myPeriodTo INTEGER := 9;
DECLARE myColumn VARCHAR(255) := 'Period';
BEGIN
DROP TABLE IF EXISTS tmpTable;
CREATE TABLE tmp_table (tmpId INT, tmpDesc varchar(255));
FOR i IN myPeriodFrom..myPeriodTo LOOP
-- Create dynamic column name and fill with data
<< code here >> -- myColumn := (myColumn || CAST(i AS VARCHAR));
ALTER TABLE tmpTable ADD COLUMN << myColumn >> INT;
INSERT INTO tmpTable (myId, myColumn)
SELECT "Id", "YearAdded" FROM "Item" WHERE "Item"."MonthAdded" = i;
END LOOP;
END $$;
SELECT * FROM tmpTable
答案 0 :(得分:0)
有点遗憾,我害怕得出结论,我想要的是不可能的。动态创建列没有真正可行的解决方案。 其次,我使用查询的应用程序结果不支持动态输出的查询。由于这些原因,我不得不重新考虑我的整个方法。
对于那些阅读并提出建议的人,谢谢。