DataGrid绑定动态变化的列数-存储过程实现方式


  
 1--*******************************
 2--|功  能:送修退换机统计表
 3--|说  明:
 4--|作  者:dzh
 5--|创建时间:2005-12-13 10:45:42
 6--*******************************
 7
 8
 9CREATE PROCEDURE GetConvertStat_SP
10 @Start_Date varchar(20)='',
11 @End_Date   varchar(20)='',
12 @ProductId     varchar(4)='',
13 @UnitsSysId varchar(20)=''
14AS
15 Declare @strWhr  varchar(200--查询条件[主查询]
16 select  @strWhr=''
17
18if (rtrim(@Start_Date)<>'')
19    begin
20        SELECT @strWhr=@strWhr+' AND Rep_GetDate>='''+rtrim(@Start_Date)+' 00:00:00'''
21    end
22if (rtrim(@End_Date)<>'')
23    begin
24        SELECT @strWhr=@strWhr+' AND Rep_GetDate<='''+rtrim(@End_Date)+' 23:59:59'''
25    end
26if (rtrim(@UnitsSysId)<>'')
27    begin
28        SELECT @strWhr=@strWhr+' AND Units_SysId='''+@UnitsSysId+''''
29    end
30
31
32Declare @str varchar(5000)
33select @str=''
34
35If (rtrim(@ProductId)<>'')
36    Begin
37        SELECT     
38            @str=@str + ',['+Product_Name+'<br>数量] = SUM(CASE Product_ID WHEN '''+ Product_ID +''' THEN Isnull(Qty, 0) ELSE 0 END)'
39             + ',['+Product_Name+'<br>比例] = SUM(CASE Product_ID WHEN '''+ Product_ID +''' THEN Cast(Isnull(Qty, 0) as Decimal) ELSE 0 END)/SUM(Isnull(Qty, 0))'        
40        FROM Rep_Info
41        WHERE Product_ID=@ProductId
42        GROUP BY Product_Name, Product_ID         
43    End
44Else
45    Begin
46        SELECT     
47             @str=@str + ',['+Product_Name+'<br>数量] = SUM(CASE Product_ID WHEN '''+ Product_ID +''' THEN Isnull(Qty, 0) ELSE 0 END)'
48             + ',['+Product_Name+'<br>比例] = SUM(CASE Product_ID WHEN '''+ Product_ID +''' THEN Cast(Isnull(Qty, 0) as Decimal) ELSE 0 END)/SUM(Isnull(Qty, 0))'        
49        FROM Rep_Info
50        WHERE Product_Name IS NOT NULL AND Product_Name<>'' AND Product_ID IS NOT NULL AND Product_ID<>''
51        GROUP BY Product_Name, Product_ID 
52        ORDER BY Product_Name, Product_ID
53    End
54--print(@str)
55
56EXEC('
57    SELECT Org_SimpleName' + @str + ',退换机总数=SUM(Isnull(Qty, 0))
58    FROM
59        (
60             SELECT TOP 100 PERCENT Org_SimpleName, Product_Name, Product_ID, Qty=COUNT(*) FROM Rep_Info_V 
61             WHERE IsGet=''1'' AND Default_DisposeID IN (''5'',''6'',''7'')    --/*IsGet=1表示已取机*/
62             ' + @strWhr + '
63             GROUP BY Org_SimpleName, Product_Name, Product_ID 
64             ORDER BY Org_SimpleName
65         ) AS tmpTab
66    GROUP BY Org_SimpleName
67    WITH ROLLUP
68')
69GO
70
posted @ 2006-01-09 21:06  blueKnight  Views(289)  Comments(0Edit  收藏  举报