如何将select组数据一一显示?
How to select group of data and show one by one?
我有一个名为 leads
的 table,它只有一列 company
。每个公司在此 table 中放置几行(或线索)。所以问题是我使用了一个简单的 SELECT * FROM Leads
并显示了输出,但一些公司很生气,因为优先考虑一家公司而不是另一家公司,但我不能告诉他们这是因为他们先进入领先地位。因此,我正在寻找一种解决方案,其中输出每个公司的 1 个潜在客户,然后当它耗尽显示每个公司的 1 个潜在客户时,仅出现下一组 1-lead。
因此,例如将其视为输入 table
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 出现两次,因为没有其他公司有未列出的潜在客户。
;With Data As (
Select
*,
Rank() Over (Partition By Company Order By LeadID) Rnk
From LeadTableName
)
Select * From Data
Order By Rnk, Company
这可能是您能得到的最接近的:
select *
from Tab
order by
row_number() over (partition by Company order by LeadID)
结果将随机排序,您可以将 LeadID
添加到 ORDER BY
,请参阅 fiddle
我有一个名为 leads
的 table,它只有一列 company
。每个公司在此 table 中放置几行(或线索)。所以问题是我使用了一个简单的 SELECT * FROM Leads
并显示了输出,但一些公司很生气,因为优先考虑一家公司而不是另一家公司,但我不能告诉他们这是因为他们先进入领先地位。因此,我正在寻找一种解决方案,其中输出每个公司的 1 个潜在客户,然后当它耗尽显示每个公司的 1 个潜在客户时,仅出现下一组 1-lead。
因此,例如将其视为输入 table
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 出现两次,因为没有其他公司有未列出的潜在客户。
;With Data As (
Select
*,
Rank() Over (Partition By Company Order By LeadID) Rnk
From LeadTableName
)
Select * From Data
Order By Rnk, Company
这可能是您能得到的最接近的:
select *
from Tab
order by
row_number() over (partition by Company order by LeadID)
结果将随机排序,您可以将 LeadID
添加到 ORDER BY
,请参阅 fiddle