2017-02-14 33 views
1

我想在這個sql語法的底部添加一個總計行,但迄今爲止沒有收到突破。我看過以下內容,但他們都不符合我的條件。有人可以就此提供協助。顯示一個SQL表的總計

Add a summary row with totals

Adding a total row to the end of query result

select dm.Builder ||' ('|| dm.Lot_Size || '''s)' as"Builder",count(sd.Address) "The Count", 
dm."Construction_ID" 
from input dm 
left join data sd on sd.inputfk = dm.inputpk 
and sd.Closing Date >= DATE '01/01/2017' and sd.Closing Date < DATE '06/30/2017' 
where dm.Construction_ID = 'AJR' 
group by dm.Builder,dm.Lot_Size, dm.Project_ID 
having count(sd.Address) > 0 
order by dm.Builder 

當我運行它:

Builder   The Count  Construction_ID 
Jake's Homes (55's)  2    AJR 
Jake's Homes (65's)  3    AJR 
Maggie's Homes (65's) 5    AJR 
Maggie's Homes (66's) 2    AJR 
Maggie's Homes (75's) 3    AJR 
Maggie's Homes (90's) 1    AJR 

Total ---------->  16 
+1

'我忘了爲什麼結果顯示冗餘爲相同的建設者和批量大小的組合,即使我已經由腳本中的所有列分組。「 - 可能是因爲」sd.Address「? – RIKI

+0

是的,需要刪除'sd.Address'。 –

回答

2

group by具有dm.Project_ID, sd.Address這可能是導致它。

對於總,你可以使用ROLLUP

試試這個:

select coalesce(dm.Builder || ' (' || dm.Lot_Size || '''s)', 'Total') as "Builder", 
    count(sd.Address) "The Count", 
    dm."Construction_ID" 
from input dm 
left join data sd on sd.inputfk = dm.inputpk 
    and sd.Closing date >= date '01/01/2017' 
    and sd.Closing date < date '06/30/2017' 
where dm.Construction_ID = 'AJR' 
group by rollup(dm.Builder || ' (' || dm.Lot_Size || '''s)') 
having count(sd.Address) > 0 
order by "Builder" 
+1

@Pythoner - 您可以通過'「Builder」來訂購。在我的答案中更新。 – GurV

1

試試這個:

select dm.Builder ||' ('|| dm.Lot_Size || '''s)' as"Builder",count(sd.Address) "The Count", 
dm."Construction_ID" 
from input dm 
left join data sd on sd.inputfk = dm.inputpk 
and sd.Closing Date >= DATE '01/01/2017' and sd.Closing Date < DATE '06/30/2017' 
where dm.Construction_ID = 'AJR' 
group by rollup((dm.Builder,dm.Lot_Size, dm.Project_ID)) 
having count(sd.Address) > 0 
order by dm.Builder 

只是......爲什麼你需要count(sd.Address) > 0