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

Làm thế nào để nhóm các hàng có cùng giá trị trong sql?

Hãy thử điều này

DECLARE @temp TABLE(col1 varchar(20),col2 int, col3 varchar(20))
insert into @temp values ('data1', 123 , '12/03/2009'),('data1', 124 , '15/09/2009'),
                        ('data2 ',333  ,'02/09/2010'),('data2 ',323 , '02/11/2010'),
                        ('data2 ',673 , '02/09/2014'),('data2',444 , '05/01/2010')

SELECT 
    (CASE rno WHEN 1 THEN col1 ELSE '' END )AS col1,
    col2,
    col3
FROM
(                   
    SELECT 
        ROW_NUMBER() OVER(PARTITION BY Col1 ORDER BY col2) AS rno,
        col1,col2,col3
    FROM @temp
) As temp

Điều này cho kết quả sau

col1    col2    col3
---------------------------------
data1   123 12/03/2009
        124 15/09/2009
data2   323 02/11/2010
        333 02/09/2010
        444 05/01/2010
        673 02/09/2014

PARTITION BY đang nhóm dữ liệu với tên cột đã cho và số hàng được tạo trong nhóm đó dựa trên order by .

Đây là SQL Fiddle

Tôi đã tạo một fiddle khác dựa trên giản đồ được cung cấp. fiddle2



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng CONVERT () trong Mệnh đề WHERE để chuyển đổi varchar thành ngày tháng

  2. Làm cách nào để lập bản đồ BigDecimal ở chế độ Hibernate để lấy lại cùng tỷ lệ mà tôi đã đặt?

  3. Mã hóa mật khẩu trên Sql Server 2008 bằng SHA1

  4. Sử dụng lại SqlCommand?

  5. Tìm tất cả các khoảng trống số nguyên trong SQL