我有一个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 = ?
免责声明:我不知道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 分组"就足够了。