2016-09-25 9 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 

、ユーザーはその行の横に表示タグ、およびクエリをクリックすることができますその平均を構成するレコードのリストを取得するために実行されます。だから私がチェアを選択すると、その平均を構成する2つのレコードを取得して表示することになります。

どうすればいいですか?

+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

そのようなことは、ちょうど1つのセルではなくリスト形式で表示する必要があります – serophous

+0

@serophous JSまたはSQL、そのリストを取り、カンマを
に置き換えてください。私は隠されたセルまたはデータ要素内のデータを持っています。 –