diff --git a/commerce_pricelist.install b/commerce_pricelist.install
index 39663f1750c3127606d2f9059babadd63e355f64..3ca1dddb8b7878fe844d5b588c90596c3f3411d4 100644
--- a/commerce_pricelist.install
+++ b/commerce_pricelist.install
@@ -191,10 +191,18 @@ function commerce_pricelist_update_8205() {
  */
 function commerce_pricelist_update_8206() {
   // Check if we have duplicate price list items for the same product/quantity.
-  $query = \Drupal::database()->select('commerce_pricelist_item', 'cpi');
+  $database = \Drupal::database();
+  $query = $database->select('commerce_pricelist_item', 'cpi');
   $query->fields('cpi', ['price_list_id', 'purchasable_entity', 'quantity', 'price__currency_code']);
   $query->addExpression('COUNT(*)', 'cnt');
-  $query->addExpression('GROUP_CONCAT(cpi.id)', 'ids');
+
+  // GROUP_CONCAT is not supported on PostgreSQL.
+  if ($database->driver() == 'pgsql') {
+    $query->addExpression("STRING_AGG(cpi.id::text, ',')", 'ids');
+  } else {
+    $query->addExpression('GROUP_CONCAT(cpi.id)', 'ids');
+  }
+  
   $query
     ->groupBy('type')
     ->groupBy('price_list_id')