我有一个sqlLite数据库,该数据库在某些字段sql语句中包含,该sql语句在IOS应用程序中创建某些图表是必需的。
现在我需要在使用Postgresql的Web应用程序中显示此图表 我需要找到一个从sqllite语法转换为postgresql语法的脚本 诸如printf,当前日期等... 我问是否有一些现成的脚本可以用于这种转换 PS:我在后端使用Symfony,所以使用PHP
示例:
SELECT
r.agent AS gebiet,
r.invoiceno AS rechnung,
r.infotext AS auftrag,
c.companyno AS kundenr,
c.companyname AS kunde,
r.itemno AS artikelnr,
r.itemtext AS artikel,
SUM(r.qty) || ' ' || r.unit AS menge,
printf('%.2f', SUM(r.turnover) / SUM(r.qty)) AS preis,
printf('%.2f', SUM(r.turnover)) || ' ' || r.currency AS gesamt,
'2' AS 'sys_align9',
'2' AS 'sys_align10',
'2' AS 'sys_align11'
FROM
invoices r
INNER JOIN
company c
ON
r.companyno = c.companyno
WHERE
r.agent = ?
答案 0 :(得分:0)
免责声明:我不知道SQLite;)
查询结构本身看起来不错,但是Postgres不能使用两件事:
printf()
将输出格式设置为两位小数,因此to_char()
可能正是您要寻找的AS 'sys_align11'
应该为AS“ sys_align11”,但引号不是必需的。SELECT
r.agent AS gebiet,
r.invoiceno AS rechnung,
r.infotext AS auftrag,
c.companyno AS kundenr,
c.companyname AS kunde,
r.itemno AS artikelnr,
r.itemtext AS artikel,
SUM(r.qty) || ' ' || r.unit AS menge,
to_char(SUM(r.turnover) / SUM(r.qty), '0.00') AS preis,
to_char(SUM(r.turnover),'0.00') || ' ' || r.currency AS gesamt,
'2' AS sys_align9,
'2' AS sys_align10,
'2' AS sys_align11
FROM
invoices r
INNER JOIN
company c
ON
r.companyno = c.companyno
WHERE
r.agent = ?
如果turnover
是integer
(或bigin
),则需要将其强制转换为数字,否则除法将作为整数除法,例如SUM(r.turnover)::numeric
在使用聚合函数时,在Postgres中将需要某种group by
-否则结果将不确定。
如果invoiceno
是invoices
表的主键,则“按r.invoiceno分组”就足够了。