SQL Server 2008 Группировка отдельных строк - PullRequest
2 голосов
/ 05 января 2012

Я использую Microsoft Sql Server 2008. с этим запросом ниже выбираются определенные строки, но возможно упорядочить строки с отдельными строками, упорядоченными из каждой таблицы.

select id1,c1,id2,c2,id3,c3
from t1 
left join t2 on t2.fk = t1.pk
left join t3 on t3.fk = t1.pk
order by id3

enter image description here

1 Ответ

2 голосов
/ 05 января 2012

Вам нужно отсортировать по id1, id2 и id3

РЕДАКТИРОВАТЬ: Обновлено с дополнительным полем последовательности

;WITH data AS
(
    select id1,c1,id2,c2,id3,c3, 
           ROW_NUMBER() OVER (PARTITION BY id1, id2 ORDER BY id2) as id2seq,
           ROW_NUMBER() OVER (PARTITION BY id1, id2, id3 ORDER BY id3) as id3seq    
    from t1   
    left join t2 on t2.fk = t1.pk  
    left join t3 on t3.fk = t1.pk  
)
select id1, c1, id2, c2, id3, c3
from data
order by id1, id2seq, id3seq

РЕДАКТИРОВАТЬ : Завершенный запрос для точных результатов

;with data as( 
    select pid 
        , pname 
        , cid 
        , cname 
    from #t1 t1 
    left join #t2 t2 on t2.fk_pid = t1.pid 
), cte AS 
( 
    select pid 
          , eid 
          , ename 
    from #t1 t1 
         left join #t3 t3 on t3.fk_pid = t1.pid
), combine AS
(
    select d.pid 
        , pname 
        , cid 
        , cname
        , ROW_NUMBER() over(partition by d.pid, cid order by cid) as seq 
        , eid 
        , ename 
      from data d join cte c on d.pid = c.pid 
) 
select pid, pname, cid, cname, eid, ename 
from combine 
order by pid, seq, cid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...