Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Връщане на номера на дял за всеки ред при запитване на разделена таблица в SQL Server (T-SQL)

Ако имате разделена таблица в SQL Server и сега искате да изпълните заявка, която включва номера на дяла на всеки ред, върнат от заявката, можете да използвате $PARTITION системна функция, за да направи точно това.

$PARTITION функцията връща номера на дяла, в който набор от стойности на колони за разделяне ще бъде съпоставен за всяка определена функция на дял.

Следователно можете да го използвате във вашия SELECT оператор за връщане на дяла, към който принадлежи всеки ред.

Пример

Ето пример за демонстрация.

SELECT 
    CatId,
    CatName,
    $PARTITION.CatsPartitionFunction(CatId) AS [Partition]
FROM Cats;

Резултат:

+---------+-------------+-------------+
| CatId   | CatName     | Partition   |
|---------+-------------+-------------|
| 1       | Meow        | 2           |
| 2       | Fluffy      | 2           |
| 3       | Scratch     | 2           |
| 4       | Bulldog     | 2           |
| 5       | King George | 2           |
| 6       | Sharp       | 3           |
| 7       | Fritz       | 3           |
| 8       | Garfield    | 3           |
| 9       | Boss        | 3           |
+---------+-------------+-------------+

В този случай редовете са разпределени между дялове 2 и 3.

Дял 1 е празен (както и дял 4), в съответствие с препоръката на Microsoft да се оставят празни дялове в двата края, за да се елиминира движението на данни в случай, че дяловете са разделени или обединени.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да преименувате база данни на SQL сървър с помощта на T-SQL

  2. Защо няма прозоречни функции в клаузите where?

  3. pyodbc - много бавна скорост на масово вмъкване

  4. Преобразувайте „datetime2“ в „smalldatetime“ в SQL Server (T-SQL примери)

  5. Принудително изчакване на заявка в SQL Server