Выберите первые 10 строк столбца в таблице - PullRequest
0 голосов
/ 09 апреля 2019

Подскажите, пожалуйста, как выбрать первые 10 строк для каждого клипа в таблице ниже

SELECT [dt_dim_id],
       [cusip_num],
       sr.[product_dim_id],
       [acct_dim_id],
       [product_name]
FROM [csr_prod].[dbo].[stock_rec] AS sr,
     [csr_prod].[dbo].[product_dim] AS pd
WHERE sr.product_dim_id = pd.product_dim_id
  AND dt_dim_id = 20180927
ORDER BY dt_dim_id,
         product_dim_id,
         acct_dim_id;

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Используйте ROW_NUMBER() с разделением по группам и упорядочите их по необходимости, затем отфильтруйте первые 10 строк:

;WITH paging AS
(
    SELECT ROW_NUMBER() OVER (PARTITION BY cusip_num 
                                  ORDER BY dt_dim_id, product_dim_id, acct_dim_id) n,
           [dt_dim_id],
           [cusip_num],
           sr.[product_dim_id],
           [acct_dim_id],
           [product_name]
      FROM [csr_prod].[dbo].[stock_rec] AS sr,
           [csr_prod].[dbo].[product_dim] AS pd
     WHERE sr.product_dim_id = pd.product_dim_id
       AND dt_dim_id = 20180927
)
SELECT * FROM paging WHERE n <= 10
0 голосов
/ 09 апреля 2019

Использование apply:

select . . .
from [csr_prod].[dbo].[stock_rec] sr cross apply
     (select top (10) pd.*
      from [csr_prod].[dbo].[product_dim] pd =
      where sr.product_dim_id = pd.product_dim_id and dt_dim_id = 20180927 
      order by ?  -- whatever column defines the first 10 records
     ) p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...