SQL grouping by all the columns

后端 未结 9 1544
囚心锁ツ
囚心锁ツ 2020-12-29 02:04

Is there any way to group by all the columns of a table without specifying the column names? Like:

select * from table group by *
9条回答
  •  臣服心动
    2020-12-29 02:21

    Here is my suggestion:

    DECLARE @FIELDS VARCHAR(MAX), @NUM INT
    
    --DROP TABLE #FIELD_LIST
    
    SET @NUM = 1
    SET @FIELDS = ''
    
    SELECT 
    'SEQ' = IDENTITY(int,1,1) ,
    COLUMN_NAME
    INTO #FIELD_LIST
    FROM Req.INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = N'new340B'
    
    WHILE @NUM <= (SELECT COUNT(*) FROM #FIELD_LIST)
    BEGIN
    SET @FIELDS = @FIELDS + ',' + (SELECT COLUMN_NAME FROM #FIELD_LIST WHERE SEQ = @NUM)
    SET @NUM = @NUM + 1
    END
    
    SET @FIELDS = RIGHT(@FIELDS,LEN(@FIELDS)-1)
    
    EXEC('SELECT ' + @FIELDS + ', COUNT(*) AS QTY FROM [Req].[dbo].[new340B] GROUP BY ' + @FIELDS + ' HAVING COUNT(*) > 1  ') 
    

提交回复
热议问题