限制结果在查询中MAX()仍然返回多行

时间:2017-05-16 19:39:02

标签: sql oracle

我刚刚来到这里,因为我刚刚跳到(儿童池)的深层学习SQL选择查询。我有这个SQL Developer提出的查询:

select
    prod_prices.store_ID,
    prod_prices.prod_ID,
    prod_prices.supp_ID,
    MAX(prod_prices.promo_price) AS max_promo_price,
    prod_prices.sell_price,
    MAX(prod_prices.start_date) AS max_start_date
FROM
    prod_prices
WHERE
        prod_prices.store_ID = 3
    AND
        prod_prices.supp_ID = 1178
GROUP BY
    prod_prices.store_ID,
    prod_prices.prod_ID,
    prod_prices.supp_ID,
    prod_prices.sell_price
HAVING
    MAX(prod_prices.start_date) > '16.04.17'
AND
    MAX(prod_prices.start_date) < '17.05.17'

返回:

"store_ID"  "prod_ID"   "supp_ID"   "MAX_promo_price"   "sell_price"    "start_date"
3       121752      1178        2           0,88        16.05.17
3       121752      1178        2           0,76        16.05.17
3       121754      1178        1           0,45        16.05.17
3       121756      1178        1           0,45        16.05.17
3       121758      1178        2           0,96        16.05.17
3       121758      1178        2           0,76        15.05.17
3       121760      1178        1           0,54        16.05.17
3       121762      1178        1           0,41        16.05.17
3       121764      1178        1           0,37        16.05.17
3       121766      1178        1           0,34        16.05.17
3       121773      1178        2           0,83        16.05.17
3       121773      1178        2           0,65        16.05.17
3       121777      1178        1           0,98        16.05.17
3       121779      1178        2           0,88        16.05.17
3       121779      1178        2           0,89        24.04.17

由于promo_price(1 =常规,2 =销售价格)和calucation原因,产品代码每个最新的start_date可以包含多个条目,因此我需要缩小该条目以使任何唯一的prod_ID只有一个条目(最高的start_date,最高的promo_price)。 不幸的是,我对查询实现row_number()或分区等方面的了解不够,我很感激帮助。如果有任何良好的学习资源,我也会对它们进行说明!

1 个答案:

答案 0 :(得分:0)

我可能错了,但我相信你的GROUP BY中有sell_price可以将group by组合成一个条目,其中所有其他条件相同且价格不同。

我会删除

{
"Participants": [
{
  "Participant": {
    "EntityHierarchy": {},
    "ProviderPlatform": "string",
    "ProviderPlatformDetail": [
      {
        "ProviderPlatform": "string",
        "Primary": true
      }
    ],
    "FirstName": "string",
    "LastName": "string",
    "BusinessName": "string",
    "City": "string",
    "Region": "string",
    "PostalCode": "string",
    "Phone": "string",
    "CountryCode": "string",
    "Email": "string",
    "AccountNumber": "string",
    "Active": true,
    "PSuiteAttribute": "string",
    "ParticipantIdentifier": "string",
    "SystemParticipantIdentifier": "string",
    "ITAIdentifier": "string"
    },
   "Platform": "string",
   "Program": "string",
   "ProgramFriendlyName": "string",
   "EnterpriseServicesIdentifier": "string",
   "IdentityMapped": true,
   "MappedToMasterPlatform": true,
   "MasterPlatform": "string",
   "SupportingPlatform": "string",
   "MasterPlatformName": "string",
   "SupportingPlatformName": "string",
   "FaultedMessages": [
   "string"
   ]
   }

并修改

GROUP BY sell_price

prod_prices.sell_price

这应该可以为您列出每件物品的最高价格