簡體   English   中英

如何從我的表中選擇一列,並根據 SQL Server 中該列中的值獲得第 n 行?

[英]How can I select a column from my table, and get very nth row based on the value in that column in SQL Server?

我有一個名為 DIVISION 的表,里面裝滿了數值。 它們並不是獨一無二的。 有一個人作為到達記錄,他們有一個分配給他們的部門。 我希望能夠根據 DIVISION 選擇表中的每第 n 行。

所以假設 DIVISION 211 有 60k 條記錄,我們選擇每第 n 行並獲得 13k 條記錄。 然后我們繼續說 222,它有 100k 條記錄,我們選擇 23k。

另外,我需要能夠在第一個 13 之后開始計算第 n 行。所以基本上,轉到 13 並將其用作起點。 13 之后選擇每第 n 行。

老實說,我什至不知道從哪里開始,我嘗試了一堆來自谷歌的例子,大多數時候我什至無法獲得足夠正確的語法來運行。

我找到了一些用於 MySQL 的東西,它似乎可以做我想做的事,但我無法弄清楚 SQL Server 的等價物。

SELECT *
FROM 
    (SELECT
        @row := @row +1 AS rownum, noun
     FROM 
         (SELECT @row :=0) r, nouns) ranked
WHERE rownum %4 =1

這假設您有足夠晚的 SQL Server 版本來使用row_number() 你很可能會這樣做:

with data as (
    select *, row_number() over (partition by DIVISION order by <sort by column>) as rn
    from WORK
)
select *
from data
where rn <= 13 or (rn - 13) % 18 = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM