【问题标题】:How to select group of data and show one by one?如何选择一组数据并一一显示?
【发布时间】:2015-11-13 04:56:25
【问题描述】:

我有一个名为leads 的表,它有一列company。每家公司在此表中都放置了几行(或潜在客户)。所以问题是我使用了一个简单的SELECT * FROM Leads 并显示了输出,但有些公司很生气,因为他们优先考虑一家公司而不是另一家公司,但我不能告诉他们这是因为他们首先进入了领先地位。所以相反,我正在寻找一种解决方案,其中每个公司的 1 个潜在客户被输出,然后当它用尽时显示每个公司的 1 个潜在客户,只出现下一组 1 个潜在客户。

因此例如将其视为输入表

Lead ID    Company
   1         ABC
   2         ABC
   3         ABC
   4         BCD
   5         CDE
   6         EFG
   7         EFG
   8         CDE
   9         ABC
  10         BCD
  11         ABC

那我需要类似的东西

Lead ID    Company
   1         ABC
   4         BCD
   5         CDE
   6         EFG
   2         ABC
  10         BCD
   7         EFG
   3         ABC
   8         CDE
   9         ABC
  11         ABC

因此,这里恰好出现了每个公司的 1 个潜在客户,然后出现下一个公司的潜在客户。当特定公司的潜在客户用尽时,剩下的只会出现。这就是为什么在最后 2 个结果中,ABC 出现了两次,而其他公司没有未列出的潜在客户。

【问题讨论】:

  • 什么是数据库/版本?

标签: sql select sql-server-2012 group-by sql-order-by


【解决方案1】:

这可能是你能得到的最接近的:

select *
from Tab
order by 
   row_number() over (partition by Company order by LeadID)

结果将随机排序,您可以将LeadID 添加到ORDER BY,参见fiddle

【讨论】:

    【解决方案2】:
    ;With Data As (
        Select
            *,
            Rank() Over (Partition By Company Order By LeadID) Rnk
        From LeadTableName
    )
    Select * From Data
    Order By Rnk, Company
    

    【讨论】:

    • 感谢您回答这个问题。 @dnoeth 的回答对你有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多