【问题标题】:TSQL ROW_NUMBER() OVER (PARTITION BY... ORDER BY....)TSQL ROW_NUMBER() OVER (PARTITION BY... ORDER BY....)
【发布时间】:2017-11-15 21:18:36
【问题描述】:

我可以在没有分区的情况下做 row_number 吗? (请参阅帖子末尾的数据)我可以使用此语句来获取 ORDER#。

     ROW_NUMBER() OVER (PARTITION BY LOG_ID ORDER BY ORDER_ID) 

关于获取 LOG# 有什么建议吗?

-LOG#   ORDER#  LOG_ID  ORDER_ID
-1      1       340580  387373215
-1      2       340580  387373225
-2      1       340925  387812330
-3      1       340935  388093450
-4      1       340945  387615845
-5      1       340990  386433405
-6      1       341675  376247120
-6      2       341675  376247130
-6      3       341675  388352445

【问题讨论】:

  • 请更好地解释你想要什么。 “获取 LOG#”是什么意思?
  • 是的 - 您可以在没有 partition by 子句的情况下获得 row_number。这是有效的:ROW_NUMBER() OVER (ORDER BY ORDER_ID)
  • ROW_NUMBER() 表达式全部乘以-1。如果我正在关注您正在尝试做的事情。

标签: tsql row-number


【解决方案1】:
SELECT
    - DENSE_RANK() OVER (ORDER BY LOG_ID) AS "#LOG",
    ROW_NUMBER() OVER (PARTITION BY LOG_ID ORDER BY ORDER_ID) AS "#ORDER",
    LOG_ID,
    ORDER_ID
FROM UnnamedTable

【讨论】:

    【解决方案2】:
    declare @yourtable table ([ORDER#] int, LOG_ID int, ORDER_ID bigint);
    insert @yourtable values
    (1,340580,387373215),
    (2,340580,387373225),
    (1,340925,387812330),
    (1,340935,388093450),
    (1,340945,387615845),
    (1,340990,386433405),
    (1,341675,376247120),
    (2,341675,376247130),
    (3,341675,388352445);
    
    
    select [-LOG#] = -dense_rank() over (order by LOG_ID), *
    from @yourtable;
    

    退货

    -LOG#                ORDER#      LOG_ID      ORDER_ID
    -------------------- ----------- ----------- --------------------
    -1                   1           340580      387373215
    -1                   2           340580      387373225
    -2                   1           340925      387812330
    -3                   1           340935      388093450
    -4                   1           340945      387615845
    -5                   1           340990      386433405
    -6                   1           341675      376247120
    -6                   2           341675      376247130
    -6                   3           341675      388352445
    

    编辑:@bacon bits 击败了我。 :(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 2012-09-23
      • 1970-01-01
      • 2014-10-23
      • 2013-02-24
      • 1970-01-01
      • 2014-05-08
      相关资源
      最近更新 更多