【问题标题】:Sql Query for below problem [closed]以下问题的Sql查询[关闭]
【发布时间】:2011-11-17 19:53:16
【问题描述】:

我有一张表,数据如下:

  Name
  ----
  ram
  ram
  ram
  sita
  sita
  sita

现在我需要像下面这样输出:

ram
sita
ram
sita
ram
sita

有人知道答案吗?

【问题讨论】:

  • 这没什么好说的。请提供更多细节、表结构、您当前使用的查询、相关表等...
  • 您的具体标准是什么?如果Name 既不是ram 也不是sita 怎么办?
  • -1,这是一个非常糟糕的问题。它没有给我们任何答案。
  • 我认为他想要每个值的所有第一次出现,然后是所有第二次,等等
  • name 是列名,这只是表中的一列。

标签: sql sql-server oracle sql-server-2008


【解决方案1】:

您可以使用分析函数 ROW_NUMBER() 来做到这一点:

select name from 
    ( select name
             , row_number() over (partition by name order by id) as rn
      from your_table
order by rn, name
/

您将需要一个列来对名称进行排序:我提出了 ID,但不知道您的表有哪些列。


以上是Oracle 语法。 T-SQL 可能支持不同的语法。

【讨论】:

    【解决方案2】:
    declare @T table(Name varchar(5))
    
    insert into @T values
    ('ram'),
    ('ram'),
    ('ram'),
    ('sita'),
    ('sita'),
    ('sita')
    
    select Name
    from @T    
    order by row_number() over(partition by Name order by Name), Name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      • 2020-09-27
      • 2018-07-03
      • 1970-01-01
      • 2013-05-14
      相关资源
      最近更新 更多