2016-09-25 42 views
1

首先,我對SQL比較陌生,因此請和我一起裸照。SQL獲取構成平均值的記錄列表

我正在處理某個報表的項目,其中某個查詢正在顯示某些表中的信息。

例如:

dbo.business_table 

prod_id | name | sale_price | 
1  | chair | 2    
1  | chair | 4   
2  | table | 5 
2  | table | 10 

而且可以說查詢是這樣的:

Select name 
,prod_id 
,COUNT(*) as totalRecords 
,AVG(sale_price) as Priceaverage 
from dbo.business_table 
group by name, prod_id 

與顯示在頁面上,用戶可以點擊該行旁的視圖標籤和查詢將運行以獲取組成該平均值的記錄列表。因此,如果我選擇主持人,那麼查詢將抓取構成該平均值的兩條記錄並顯示它們。

我該怎麼做?

+0

我假設你想在報表上一個按鈕,把你帶到一個不同的報告? – ZLK

+0

你忘記的是一個平均值不能顛倒! – e4c5

+0

ZLK - 是的,它會運行一個新的報告,並在彈出的 – serophous

回答

0

只是爲了好玩,您可以通過JavaScript傳遞細節並在客戶端解析它。無需進行第二次

Declare @business_table table (prod_id int,name varchar(50),sale_price money) 
Insert Into @business_table values 
(1,'chair',2), 
(1,'chair',4), 
(2,'table',5), 
(2,'table',10) 

;with cteBase as (
    Select name 
      ,prod_id 
      ,totalRecords = COUNT(*) 
      ,Priceaverage = AVG(sale_price) 
    From @business_table A 
    Group By name, prod_id 
) 
Select A.* 
     ,B.Detail 
From cteBase A 
Cross Apply (Select Detail=Stuff((Select ',' + cast(sale_price as varchar(25)) 
            From @business_table 
            Where prod_id=A.prod_id 
            For XML Path ('')),1,1,'')) B 

返回

name prod_id totalRecords Priceaverage Detail 
chair 1  2    3.00   2.00,4.00 
table 2  2    7.50   5.00,10.00 
+0

顯示結果,sorta的作品,我只需要得到的細節出現在列表格式而不是在一個單元格 – serophous

+0

@serophous無論是在JS或SQL,拿這個清單並用
替換逗號。我會在一個隱藏的單元格或數據元素中的數據。 –