SQL 2008'de, gruplara göre sıralanmış verileri döndüren karmaşık bir arama sorgusu oluşturdum ve sorgunun kendisinde disk belleği ve sıralama işlevleri var; Sayfalama seçeneklerine bağlı olarak belirli sayıda kayıt döndürüldüğünde, belirli sayıda grup döndürmesi gerekir (böylece kayıt sayısı değişir).Temp tabloları olmadan bir SQL sorgusunda gruplar için sıra numarası nasıl eklenir
Şu anda bunu Temp Tabloları kullanarak yapıyorum (ilk temp tablosu, aramanın parçası olarak seçilecek Grupların bir listesini oluşturur ve sonra bunları numaralandırır ... ve ikinci sorgu buna katılır tabloyu gerçek aramaya ... böylece, arama sorgusunu iki kez çalıştırır.
Aradığım şey, SQL 2008'deki bazı yeni işlevlerin (temp tablolarının kullanılmasını gerektirmeyen) bazılarını kullanarak bunu yapmak için daha etkili bir yoldur.
Böyle bir formatta veri alabilir, ben ayarlanmalıdır ki ...
Record Group GroupSequence -------|---------|-------------- 1 Chickens 1 2 Chickens 1 3 Cows 2 4 Horses 3 5 Horses 3 6 Horses 3
geçici tabloları kullanarak olmadan SQL 2008'de Tek bir sorgu ile bunu gerçekleştirmek için nasıl bir fikir ?
;with groups as (
select top 10 name, row_number() over(order by name) 'sequence'
from table1
group by name
order by name
)
select row_number() over(order by g.name) 'Record',
g.name 'GroupName',
g.sequence 'GroupSequence'
from groups
Veriler hangi sütunlardan hesaplanır ve hangi değerlerin hesaplanması gerekir? – RichardTheKiwi
Birinci ve ikinci sütunlar ("Kayıt [Numara]" ve "Grup") verilerden. "GroupSequence" sütunu, sorgu tarafından hesaplanacaktır. pagination amaçları doğrultusunda – Jacob