【问题标题】:Select Distinct and sequence at the same time同时选择 Distinct 和 sequence
【发布时间】:2020-02-12 08:40:11
【问题描述】:

我怎样才能在 select 语句上使用Distinct 以及 SQL Server 上的序列

我尝试了这个子查询,但没有运气,我得到了错误

检查约束、默认对象、计算列、视图、用户定义函数、用户定义聚合、用户定义表类型、子查询、公用表表达式、派生表或返回中不允许使用 NEXT VALUE FOR 函数声明。

 Select Distinct (Select
                  Next Value for dbo.P_PM_TBlIF240_SEQ , 'PH70', LEFT(ToolID, LEN(ToolID) - 2) as TOOLID, UsedLife, GETDATE(), CURRENT_TIMESTAMP, 'PH70-TA' 
            From
                    Machine_ToolItem_Relationship ) from Machine_ToolItem_Relationship

谁能帮我解决这个问题?

【问题讨论】:

  • 一些理论:您可以尝试将next value 放入CROSS APPLY。如果这不起作用,您可以尝试将其包装在标量函数中并在标量函数上使用交叉应用。否则,您需要将结果加载到表格中,并将序列逐行应用于表格。
  • 可能是XY problem...Edit 问题并提供minimal reproducible example。即,表的 DDL(CREATE 语句)和序列,DML(INSERTstatemens)和表的样本数据以及作为表格文本的样本数据的期望结果。不要为此使用屏幕截图或其他图片。

标签: sql sql-server distinct


【解决方案1】:

感谢@Nick.McDermaid 的帮助,我的最终查询看起来像这样。

Select
    Next Value for dbo.P_PM_TBlIF240_SEQ , 'PH70', LEFT(ToolID, LEN(a.ToolID) - 2) as TOOLID, a.UsedLife, GETDATE(), CURRENT_TIMESTAMP, 'PH70-TA' 
    from (Select
    Distinct  LEFT(ToolID, LEN(ToolID) - 2) as TOOLID, UsedLife 
    from Machine_ToolItem_Relationship) as a  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多