2017-12-06 1 views
0

Wenn ich diese Abfrage in Fenstersystem laufen korrekt UNNSET verhalten, aber wenn ich diese Abfrage Linux verhalten laufen different.unnset Rekordliste auf andere ZeileIN Linux Distinct SQL funktioniert nicht mit UNNEST

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 
+0

Zeigen Sie die Ausgabe erhalten Sie und die Ausgabe, die Sie erwarten. Und stellen Sie sicher, dass Sie in beiden Fällen ** genau ** dieselben Daten in ** allen * Tabellen haben. Es ist sehr unwahrscheinlich, dass dies vom Betriebssystem abhängt. Es gibt Unterschiede zwischen der Windows-Version und der Linux-Version, aber "unnest()" gehört nicht dazu (hauptsächlich kann das Ergebnis von String-Vergleichen anders sein). Außerdem: Es wird davon abgeraten, in der SELECT-Liste mehrere Funktionen zur Rückgabe von Sätzen zu verwenden (Einzelheiten finden Sie im Handbuch): https://www.postgresql.org/docs/current/static/xfunc-sql.html#XFUNC-SQL-FUNCTIONS-RETURNING- SET) –

+0

Sie erhalten wahrscheinlich bessere Antworten, wenn Sie ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) angeben können, das das Verhalten ** [edit] ** Ihre Frage dazu zeigt , tue ** nicht ** PLZ in Kommentaren. –

Antwort

0

duplizieren Wenn immer Duplikate Zeilen ist das Problem, versuchen Sie dies

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; 
+0

Aber meine Service-Spalte zeigen t. Ich brauche Service zeigen auch –

+0

Können Sie Struktur von Tabellen und Ihre gewünschte Ausgabe? – penguin

+0

Ich führe deine Abfrage jetzt ihre Showduplikation –