DataGrid绑定动态变化的列数-存储过程实现方式
1
--*******************************
2
--|功 能:送修退换机统计表
3
--|说 明:
4
--|作 者:dzh
5
--|创建时间:2005-12-13 10:45:42
6
--*******************************
7
8
9
CREATE PROCEDURE GetConvertStat_SP
10
@Start_Date varchar(20)='',
11
@End_Date varchar(20)='',
12
@ProductId varchar(4)='',
13
@UnitsSysId varchar(20)=''
14
AS
15
Declare @strWhr varchar(200) --查询条件[主查询]
16
select @strWhr=''
17
18
if (rtrim(@Start_Date)<>'')
19
begin
20
SELECT @strWhr=@strWhr+' AND Rep_GetDate>='''+rtrim(@Start_Date)+' 00:00:00'''
21
end
22
if (rtrim(@End_Date)<>'')
23
begin
24
SELECT @strWhr=@strWhr+' AND Rep_GetDate<='''+rtrim(@End_Date)+' 23:59:59'''
25
end
26
if (rtrim(@UnitsSysId)<>'')
27
begin
28
SELECT @strWhr=@strWhr+' AND Units_SysId='''+@UnitsSysId+''''
29
end
30
31
32
Declare @str varchar(5000)
33
select @str=''
34
35
If (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
44
Else
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
56
EXEC('
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
')
69
GO
70
--*******************************2
--|功 能:送修退换机统计表3
--|说 明:4
--|作 者:dzh5
--|创建时间:2005-12-13 10:45:426
--*******************************7

8

9
CREATE PROCEDURE GetConvertStat_SP10
@Start_Date varchar(20)='',11
@End_Date varchar(20)='',12
@ProductId varchar(4)='',13
@UnitsSysId varchar(20)=''14
AS15
Declare @strWhr varchar(200) --查询条件[主查询]16
select @strWhr=''17

18
if (rtrim(@Start_Date)<>'')19
begin20
SELECT @strWhr=@strWhr+' AND Rep_GetDate>='''+rtrim(@Start_Date)+' 00:00:00'''21
end22
if (rtrim(@End_Date)<>'')23
begin24
SELECT @strWhr=@strWhr+' AND Rep_GetDate<='''+rtrim(@End_Date)+' 23:59:59'''25
end26
if (rtrim(@UnitsSysId)<>'')27
begin28
SELECT @strWhr=@strWhr+' AND Units_SysId='''+@UnitsSysId+''''29
end30

31

32
Declare @str varchar(5000)33
select @str=''34

35
If (rtrim(@ProductId)<>'')36
Begin37
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_Info41
WHERE Product_ID=@ProductId42
GROUP BY Product_Name, Product_ID 43
End44
Else45
Begin46
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_Info50
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_ID53
End54
--print(@str)55

56
EXEC('57
SELECT Org_SimpleName' + @str + ',退换机总数=SUM(Isnull(Qty, 0))58
FROM59
(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_SimpleName65
) AS tmpTab66
GROUP BY Org_SimpleName67
WITH ROLLUP68
')69
GO70


浙公网安备 33010602011771号