Что такое модели для хранения древовидных структур и каковы их характеристики?

Вы должны использовать ROW_NUMBER в следующем:

select oDate, oName, oItem, oQty, oRemarks
from (
   select *, row_number() over(partition by oName, oItem order by oDate desc) rn  
   from #t
)x
where rn = 1
order by oDate

OUTPUT

oDate   oName   oItem   oQty    oRemarks    
2016-01-01  A   001     2                   
2016-01-01  A   002     1       test        
2016-01-02  C   001     2                   
2016-01-03  B   001     4                   
2016-01-03  B   002     1                   
5
задан Hanno Fietz 12 September 2008 в 12:39
поделиться

2 ответа

Оригинальный ресурс для этого является главами 28-30 SQL для Присяжных острословов.

(Я рекомендовал эту книгу так я, фигура Celko должна мне роялти к настоящему времени!)

1
ответ дан 15 December 2019 в 06:38
поделиться

Изменение состоит в том, где Вы используете прямое иерархическое представление (т.е. родительская ссылка в узле), но также и храните значение пути.

т.е. для дерева каталогов, состоящего из следующего:

C:\
   Temp
   Windows
       System32

У Вас были бы следующие узлы

Key     Name     Parent     Path
1       C:                  *1*
2       Temp       1        *1*2*
3       Windows    1        *1*3*
4       System32   3        *1*3*4*

Путь индексируется и позволит Вам быстро делать запрос, который берет узел и всех его детей, не имея необходимость управлять диапазонами.

т.е. найти C:\Temp и всех его детей:

WHERE Path LIKE '*1*2*%'

Это представление является единственным местом, о котором я могу думать, где хранение идентификатора в строке как это в порядке.

2
ответ дан 15 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: