我有3张桌子。 人,群组和 PersonGroup 。 每个人可以位于多个群组中。 在 PersonGroup 表中有一个名为 ShowCount 的字段,该字段表示应显示人的次数。
实施例: Person Bill在StackOverflow组中,应该显示3次,所以输出应该是这样的
Bill
Bill
Bill
有没有办法用SQL做到这一点?
答案 0 :(得分:1)
试试这个
select P.name
from person P
join PersonGroup pg on pg.person_id=p.id
join master.dbo.spt_values where type='P' and number>0 and number <= pg.ShowCount
答案 1 :(得分:1)
您好,数字表可以帮助您解决问题。 您可以在http://www.kodyaz.com/articles/sql-server-tsql-cte-numbers-table.aspx
找到功能代码这是一个示例t-sql脚本
select
pg.showcount,
p.name,
g.groupname
from PersonGroup pg
inner join Person p on p.personid = pg.personid
inner join Groups g on g.groupid = pg.groupid
inner join dbo.NumbersTable(1,12,1) n on pg.showcount >= n.i
我希望这有帮助,
答案 2 :(得分:0)
所以我们现在就这样做了:
WITH ShowCounter AS (SELECT 1 AS ShowCount
UNION ALL
SELECT ShowCount + 1
FROM ShowCounter
WHERE (ShowCount + 1 <= 100))
SELECT Person.Name
FROM ShowCounter
INNER JOIN Person ON ShowCounter.ShowCount <= Person.ShowCount
ORDER BY PersonGroup.PersonGroupID
适用于ShowCount&lt; = 100