Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak pogrupować wiersze o tej samej wartości w sql?

Wypróbuj to

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

Daje to następujące wyjście

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 grupuje dane o podanej nazwie kolumny, a numer wiersza jest generowany w tej grupie na podstawie order by .

Oto SQL Fiddle

Stworzyłem kolejne skrzypce na podstawie dostarczonego schematu.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. Pobierz varbinary(MAX) z SQL Server do byte[] w C#

  2. SQL Server - oblicz czas, jaki upłynął między dwoma znacznikami daty i godziny w formacie GG:MM:SS

  3. Nie można połączyć się z msql 2008 express za pomocą JDBC

  4. SQLServer IDENTITY Kolumna z tekstem

  5. Zabezpieczenia IIS7, SQL 2008 i ASP.NET MVC