【发布时间】:2017-12-06 10:32:14
【问题描述】:
当我在窗口系统中运行此查询时,UNNSET 行为正确 但是当我运行这个查询时,Linux 的行为不同。在不同的行上设置重复记录列表
SELECT DISTINCT
"billing_billmanagement"."creation_date",
"billing_billmanagement"."bill_number",
unnest(array_agg(DISTINCT "inventory_product"."product_name")) AS "product",
unnest(array_agg(DISTINCT "services_service"."name")) AS "service"
FROM "billing_billmanagement"
INNER JOIN "users_staffuser" ON ("billing_billmanagement"."staff_id" = "users_staffuser"."id")
INNER JOIN "auth_user" ON ("users_staffuser"."user_id" = "auth_user"."id")
LEFT OUTER JOIN "billing_customerproductbill" ON ("billing_billmanagement"."id" = "billing_customerproductbill"."bill_id")
LEFT OUTER JOIN "inventory_product" ON ("billing_customerproductbill"."product_id" = "inventory_product"."id")
LEFT OUTER JOIN "billing_customerservicebill" ON ("billing_billmanagement"."id" = "billing_customerservicebill"."bill_id")
LEFT OUTER JOIN "services_service" ON ("billing_customerservicebill"."service_id" = "services_service"."id")
WHERE "billing_billmanagement"."creation_date" BETWEEN '2017-12-04' AND '2017-12-06'
GROUP BY billing_billmanagement.creation_date,
billing_billmanagement.bill_number
ORDER BY "billing_billmanagement"."creation_date" ASC
【问题讨论】:
-
显示你得到的输出和你期望的输出。并确保在这两种情况下,*all 表中的数据完全相同。这不太可能取决于操作系统。 Windows 版本和 Linux 版本之间存在差异,但
unnest()不是其中之一(主要是字符串比较的结果可能不同)。另外:不鼓励在 SELECT 列表中使用多个集合返回函数(详见手册:postgresql.org/docs/current/static/…) -
如果您可以提供一个 Minimal, Complete, and Verifiable example 来显示行为 edit 您的问题,那么您可能会得到更好的答案,请不要发布cmets中的代码。
标签: sql postgresql unnest