выберите строку n раз с SQL - PullRequest
       2

выберите строку n раз с SQL

1 голос
/ 13 октября 2011

у меня 3 таблицы. Person , Group и PersonGroup .Каждый Персона может быть в нескольких Группах .В таблице PersonGroup есть поле с именем ShowCount , в котором указано, сколько раз должен быть показан Person .

Пример.в группе StackOverflow и должен отображаться 3 раза, поэтому вывод должен выглядеть следующим образом

Bill 
Bill 
Bill 

Есть ли способ сделать это с помощью SQL?

Ответы [ 3 ]

1 голос
/ 13 октября 2011

Здравствуйте, таблица чисел может помочь вам с решением. Вы можете найти код функции на 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

Надеюсь, это поможет,

1 голос
/ 13 октября 2011

Попробуйте это

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
0 голосов
/ 14 октября 2011

так вот как мы это сделали сейчас:

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 <= 100 </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...