2017-09-21 46 views
-3

由於我對同一時間戳有多行,因此有些查詢有問題。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個或更多的行,我想所有的壓扁這一行值,如果兩者都有值我想保持最高值。

+0

什麼是你的選擇第一行而不是第二的原理是什麼?什麼是表格結構,列名,...這是關於如何提問的一個很好的信息。 https://stackoverflow.com/help/mcve – Eric

+0

它看起來像你想行爲像字符串連接。 STUFF可能是一個很好的使用方法,但是您需要利用最後一列的獨特需求,您是否需要顯示最後一列中的最大值,或者只是第一行列爲空? –

+0

定義:「我想保持最高值。」最大組看起來像它會工作錯誤如果第3條第2條記錄有130和第4條第2條記錄有200你會混合/匹配值。你確定這是你想要的嗎?或者它永遠不會發生,因爲只有時間戳記填寫在「兩個」記錄「 – xQbert

回答

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