Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL - Thay thế các hàng lặp lại bằng giá trị null trong khi vẫn giữ nguyên số lượng hàng

Bạn có thể làm điều này bằng cách liệt kê các hàng trong vòng một năm. Sau đó, cập nhật tất cả trừ cái đầu tiên:

with toupdate as (
      select t.*, row_number() over (partition by [year] order by [date]) as seqnum
      from t
     )
update toupdate
    set [year] = NULL
    where seqnum > 1;

Nếu bạn muốn điều này như một select tuyên bố:

with ts as (
      select t.*, row_number() over (partition by [year] order by [date]) as seqnum
      from t
     )
select [date],
       (case when seqnum = 1 then [year] end) as [year]
from ts;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách SHOWPLAN_XML hoạt động trong SQL Server

  2. CHARINDEX () so với PATINDEX () trong SQL Server - Sự khác biệt là gì?

  3. Chọn thứ tự đánh giá mệnh đề ở đâu

  4. Làm cách nào để nối và tạo một nhóm văn bản trong máy chủ sql?

  5. Hàm convert của SQL hoạt động như thế nào khi chuyển đổi datetime thành float?