SQL Server:将多行从内连接表转换为单行

时间:2017-09-21 18:15:32

标签: sql sql-server

我遇到了一些查询问题,因为我有相同时间戳的多行。

| 1 | 2017-09-21 08:52:18.000 | 120 | 255 | 0 | 0 | 0 | 0 |          |
| 2 | 2017-09-21 08:52:18.000 |     |     |   |   |   |   | 17203200 |      

我希望结果是

| R | 2017-09-21 08:52:18.000 | 120 | 255 | 0 | 0 | 0 | 0 | 17203200 |

因为它是相同的数据,但因为它们来自不同的表,所以它创建了2行或更多行,我想用所有值将其压缩到一行,如果两者都有值,我想保持最高值。

1 个答案:

答案 0 :(得分:3)

你可以尝试一下

Declare @Table table (
 Column1 int    
,Column2 datetime 
,Column3 int 
,Column4 int 
,Column5 int 
,Column6 int 
,Column7 int 
,Column8 int 
,Column9 int 
,Column10 int
)


INSERT @Table Values
(1,'2017-09-21 08:52:18.000',120,255,0,0,0,0, NULL,NULL                        )
,(2,'2017-09-21 08:52:18.000',NULL ,NULL , NULL, NULL, NULL, NULL,17203200,NULL)


SELECT
Column2 
,Max(Isnull(Column3 ,0)) Column3
,Max(Isnull(Column4 ,0)) Column4
,Max(Isnull(Column5 ,0)) Column5
,Max(Isnull(Column6 ,0)) Column6
,Max(Isnull(Column7 ,0)) Column7
,Max(Isnull(Column8 ,0)) Column8
,Max(Isnull(Column9 ,0)) Column9
,Max(Isnull(Column10,0)) Column10

FROM 
    @Table
Group By 
Column2