2016-03-08 11 views
1

我有一個表X如何返回非空行對於給定的ID - 蜂巢

ID A  B 
    -------------- 
    1 abc 27 
    1  -  28 
    2  -  33 
    3 xyz 41 
    3  -  07 

我需要輸出

ID A  B 
    -------------- 
    1 abc 27 
    2  -  33 
    3 xyz 41 

我想這樣做

max(A) OVER (PARTITION BY ID) as the_value 

但它沒有工作。我仍然可以看到輸出表中的所有行。

我想知道是否有人遇到類似的情況,並有解決方案?

+0

我不知道我理解你的。您的標題不能反映您想要的內容 - 您需要的輸出中的ID = 2爲' - ' –

+0

' - '表示行中的空值:) – underwood

回答

2

你可以使用這個簡單的伎倆獲得了一些列刷爆全記錄:

select original.* from 
(select ID,max(B) as B from Tbl group by ID) maxB 
inner join 
(select * from Tbl) original 
on original.ID = maxB.ID and original.B = maxB.B 

現在這當然是一個矯枉過正的代碼。你也可以這樣做:

select Tbl.* from 
(select ID,max(B) as B from Tbl group by ID) maxB 
inner join 
Tbl 
on Tbl.ID = maxB.ID and Tbl.B = maxB.B 

,但第一個版本更是一個模板做任何你想要進一步列,字段,條件加入等

+0

是的。這工作。我想在沒有加入的情況下實現這一目標,所以我正在探索是否可以使用Analytic UDF來完成此任務。謝謝Zahiro! – underwood

+0

很高興幫助:) –