在Linux中不同的SQL不能与UNNEST

时间:2017-12-06 10:32:14

标签: sql postgresql unnest

当我在窗口系统中运行此查询时,行为正确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

1 个答案:

答案 0 :(得分:0)

如果出现重复行问题,请尝试使用

 SELECT billing_billmanagement.creation_date,
           billing_billmanagement.bill_number,
           inventory_product.product_name AS product,
           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 1,
             2,
             3,
             4
    ORDER BY 1 ASC;