【问题标题】:MySQL 'partition by' clauseMySQL 'partition by' 子句
【发布时间】:2015-11-29 19:26:35
【问题描述】:

我在分区子句中遇到错误。请帮我。错误是

 Select Model_Name,  
   Case Model_Subtype   
        When 'Weight' then 'Static'  
        When 'Linked Account' then 'Dynamic'  
        When 'Flexible' then 'Dynamic'  
       Else 'Not Defined'  
  End as Model_Type, Security_Name, Market_Value,Weight,  
  Case When Weight = 0 And Market_Value= 0 Then 0  
     When Weight  = 0 Then Cast(Market_Value/ nullif(SUM(market_Value)   
           OVER (Partition by Model_Name),0) AS Decimal (10,4))  
      When Weight !=0 Then Weight/100   
    Else Weight End as Target_Weight,  
         vehicle.Vehicle_Name  
    from   
  OFF_PRODUCT_MODEL model    
 Join OFF_PRODUCT_MODEL_TARGET target on target.Model_Id = model.Model_Id  
  Join OFF_PRODUCT_SECURITIES Sec on sec.Security_Id = target.Security_Id   
  left outer Join Offer_Back_End.tblStrategies Strategy on    Strategy.Vestmark_Sleeve_Code = model.Model_Name   
   left outer join Offer_Back_End.tblVehicles vehicle On vehicle.Vehicle_Id = strategy.Vehicle_ID
 Where (Strategy.Active_Strategy is null or Strategy.Active_Strategy = 1)  

Err] 1064 - 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本以获得正确的语法 在 '(Partition by Model_Name),0) 附近使用 AS 十进制 (10,4)) When Weight !=0 Then Weight/' 在第 11 行

【问题讨论】:

  • mysql不支持这样的分区,我们也不是代码翻译服务。
  • MySQL 不支持OVER() 子句。
  • 我不认为这个问题是重复的,因为 OP 要求 正确 语法来执行此操作。

标签: mysql sql


【解决方案1】:

嗯,OVER (Partition by Model_Name) 是分析函数,很遗憾 MySQL 不支持并且没有它们,所以你得到了上述错误。

【讨论】:

  • 嗨拉胡尔,感谢您的快速回复。你能告诉我如何在 MySQL 中转换 Over(Partition by Model_Name ) 子句吗?感谢您的帮助。
【解决方案2】:

MySQL 不支持OVER() 子句。一般来说,窗口函数不是 MySQL 的一部分。

但是您可以模仿它 - 请参考以下答案:

【讨论】:

    猜你喜欢
    • 2011-09-07
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    相关资源
    最近更新 更多