1
/***************************************************************************************************
2
*
3
* 作 者 :
4
* 日 期 :2008-03-18
5
* 描 述 :核单台帐表
6
*
7
***************************************************************************************************/
8
9
alter proc Finance_P_AreceivableClaiGroupBy
10
@begindate datetime, --开始日期
11
@enddate datetime, --截止日期
12
@pavilionid varchar(8000), --楼盘代码
13
@UnitCode varchar(50),--公司代码
14
@ExesTypeName varchar(50),--收费标准
15
@ExesGenreName varchar(50)--费用类型
16
as
17
begin
18
--创建临时表
19
create table #Temp_AreceivableClaiGroupBy
20
(
21
colId int,
22
CellNum varchar(200), --铺位编号(合同编号)
23
ExesTypeName varchar(100),--收费类别
24
AccountMoney decimal(10,2)--应收金额
25
)
26
27
if(@pavilionid<>'')
28
begin
29
/******************************情况一******************************************/
30
declare @where varchar(8000)
31
declare @sql varchar(8000)
32
set @where='and V_Lease_HouseCell.PavilionID in('+@pavilionid+') and V_Lease_HouseCell.BargainID=null'
33
34
set @sql='select distinct
35
Finance_Areceivable.AreceivableID,--主键
36
V_Lease_HouseCell.CellNum, --单元号(合同编号)
37
Finance_ChargeItemSet.name As ExesTypeName,--费用类型
38
Finance_Areceivable.AccountMoney--应收款
39
From Finance_Areceivable
40
join system_framework on system_framework.UnitID=Finance_Areceivable.CompanyID
41
join V_Lease_HouseCell on V_Lease_HouseCell.CellID=Finance_Areceivable.CellID or V_Lease_HouseCell.BargainID=Finance_Areceivable.BargainID
42
join House_Client on House_Client.OwnerID=Finance_Areceivable.OwnerID
43
join Lease_Bargain on Finance_Areceivable.BargainID=Lease_Bargain.BargainID
44
left outer join Finance_ChargeItemSet on Finance_Areceivable.ItemID=Finance_ChargeItemSet.ItemID
45
left outer join Sys_ExesGenre on Sys_ExesGenre.ExesGenreID=Finance_ChargeItemSet.ExesGenreID
46
left outer join Sys_ExesType on Sys_ExesType.ExecTypeID=Finance_Areceivable.ItemType
47
48
where (system_framework.UnitCode like '''+@UnitCode+'''+''%'') and Finance_Areceivable.AccountDate between '''
49
+convert(varchar(10),@begindate,120)+''' and '''+convert(varchar(10),@enddate,120)+''' '+@where+''
50
if(@ExesTypeName<>'')
51
set @sql=@sql+' and Finance_ChargeItemSet.name='''+@ExesTypeName+''''
52
if(@ExesGenreName<>'')
53
set @sql=@sql+' and Sys_ExesGenre.ExesGenreName='''+@ExesGenreName+''''
54
--print @sql
55
56
/*********************************情况二***************************************/
57
declare @leasesql varchar(8000)
58
declare @leasewhere varchar(8000)
59
set @leasewhere='and V_Lease_HouseCell.PavilionID in('+@pavilionid+') and (V_Lease_HouseCell.BargainID<>null or V_Lease_HouseCell.BargainID<>0)'
60
61
set @leasesql='select distinct
62
Finance_Areceivable.AreceivableID,--主键
63
(select dbo.fn_GetBargainCellNum(Finance_Areceivable.BargainID))+''(''+Lease_Bargain.BargainNum+'')'' as CellNum, --单元号(合同编号)
64
Finance_ChargeItemSet.name As ExesTypeName,--费用类型
65
Finance_Areceivable.AccountMoney--应收款
66
67
From Finance_Areceivable
68
join system_framework on system_framework.UnitID=Finance_Areceivable.CompanyID
69
join V_Lease_HouseCell on V_Lease_HouseCell.CellID=Finance_Areceivable.CellID or V_Lease_HouseCell.BargainID=Finance_Areceivable.BargainID
70
join House_Client on House_Client.OwnerID=Finance_Areceivable.OwnerID
71
join Lease_Bargain on Finance_Areceivable.BargainID=Lease_Bargain.BargainID
72
left outer join Finance_ChargeItemSet on Finance_Areceivable.ItemID=Finance_ChargeItemSet.ItemID
73
left outer join Sys_ExesGenre on Sys_ExesGenre.ExesGenreID=Finance_ChargeItemSet.ExesGenreID
74
left outer join Sys_ExesType on Sys_ExesType.ExecTypeID=Finance_Areceivable.ItemType
75
76
where (system_framework.UnitCode like '''+@UnitCode+'''+''%'') and Finance_Areceivable.AccountDate between '''
77
+convert(varchar(10),@begindate,120)+''' and '''+convert(varchar(10),@enddate,120)+''' '+@leasewhere+''
78
if(@ExesTypeName<>'')
79
set @leasesql=@leasesql+' and Finance_ChargeItemSet.name='''+@ExesTypeName+''''
80
if(@ExesGenreName<>'')
81
set @leasesql=@leasesql+' and Sys_ExesGenre.ExesGenreName='''+@ExesGenreName+''''
82
83
--向临时表中插入数据
84
set @sql='insert into #Temp_AreceivableClaiGroupBy '+@sql+' union '+@leasesql
85
exec(@sql)
86
--print @sql
87
88
--动态拼接Sql查询语句,实现行列转化
89
declare @sqlGroup varchar(8000)
90
set @sqlGroup = 'select CellNum as ''铺位编号(合同编号)'' '
91
select @sqlGroup = @sqlGroup + ' , sum(case ExesTypeName when ''' + a.ExesTypeName + ''' then AccountMoney else null end) [' + a.ExesTypeName + ']' from (select distinct ExesTypeName from #Temp_AreceivableClaiGroupBy) as a
92
set @sqlGroup = @sqlGroup + ',sum(AccountMoney) as [总计] from #Temp_AreceivableClaiGroupBy group by CellNum '
93
exec(@sqlGroup)
94
--print @sqlGroup
95
96
--删除临时表
97
DROP TABLE #Temp_AreceivableClaiGroupBy
98
end
99
end
100

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100
