SELECT cast ( SUBSTRING ( CAST ("ProcessingDate" AS text), 5, 2 ) as integer),
COUNT(*) INTO resultValue1,resultValue2
FROM "DemoLogs"."Project"
WHERE "Addr" = 'Y' AND "ProcessingDate" >= 20160110
GROUP BY 1
ORDER BY 1;
在我的数据库中,ProcessingDate
存储为 YYYYMMDD 。所以,我从中提取它的月份。
如果我们删除INTO
子句,此查询工作正常但是,我想存储结果以进一步使用它。
那么变量resultValue1
和resultValue2
的数据类型应该是如何存储数据的(因为数据将是多个)。
由于我是PostgreSQL的新手,我不知道如何做到这一点,任何人都可以帮助我。
答案 0 :(得分:1)
此处resultValue1
& resultValue2
将是表而不是变量。您可以使用列名进行分组。
使用它们为列和组提供一些列别名。
你可能想要这个。
SELECT cast ( SUBSTRING ( cast ("ProcessingDate" as text),5 , 2 ) as
integer) AS resultValue1, COUNT(*) AS resultValue2
INTO <NewTable> --NewTable will be created with those two columns
FROM "DemoLogs"."Project"
-- conditions
Group By 1
-- other contitions/clauses
;
请参阅此INTO Documentation。
希望这有帮助。
答案 1 :(得分:0)
试试这个:
SELECT cast ( SUBSTRING ( cast ("ProcessingDate" as text),5 , 2 ) as integer)resultValue1,
COUNT(*)resultValue2
INTO <Table Name>
FROM "DemoLogs"."Project"
WHERE "Addr" = 'Y'
AND "ProcessingDate" >= '20160110'
Group By 1
Order By 1;
答案 2 :(得分:0)
将上述query
存储在变量中,并从中删除INTO
子句。
所以,现在查询:
query = SELECT cast ( SUBSTRING ( CAST ("ProcessingDate" AS text), 5, 2 ) as
integer),
COUNT(*)
FROM "DemoLogs"."Project"
WHERE "Addr" = 'Y' AND "ProcessingDate" >= 20160110
GROUP BY 1
ORDER BY 1;
现在声明record
类型的 result_data ,并按以下方式使用:
我们循环result_data
,因为它提供了行数作为输出
我已声明类型resultset
的{{1}}来存储结果(因为我需要进一步)
text