1 /************************************************************
2 * Code formatted by SoftTree SQL Assistant ?v6.5.258
3 * Time: 2014/9/12 16:41:46
4 ************************************************************/
5
6 GO
7
8 /****** Object: StoredProcedure [dbo].[SP_GetCustRelatedInfo2] Script Date: 09/12/2014
9
10 15:48:17 ******/
11 SET ANSI_NULLS ON
12 GO
13
14 SET QUOTED_IDENTIFIER ON
15 GO
16
17
18
19 -- =============================================
20 -- Author: XXX
21 -- Create date: XXX
22 -- Description: XXX
23 -- =============================================
24 ALTER PROCEDURE [dbo].[SP_GetCustRelatedInfo2]
25 @custId NVARCHAR(30) --客户编号
26 ,
27 @custNam NVARCHAR(1000) --客户名称
28 ,
29 @areaNam NVARCHAR(30)--区域、省份名称
30 ,
31 @pageSize INT --单页记录条数
32 ,
33 @pageIndex INT --当前页左索引
34 ,
35 @totalRowCount INT OUTPUT --输出总记录条数
36 AS
37 BEGIN
38 SET NOCOUNT ON;
39
40 DECLARE @RowStart INT; --定义分页起始位置
41 DECLARE @RowEnd INT; --定义分页结束位置
42
43 DECLARE @Sql NVARCHAR(MAX); --拼接SQL语句
44 DECLARE @SqlSelectResult NVARCHAR(MAX); --Sql查询结果语句
45 DECLARE @SqlCount NVARCHAR(MAX); --Sql Count计数语句
46
47 IF @pageIndex > 0
48 BEGIN
49 SET @pageIndex = @pageIndex -1;
50 SET @RowStart = @pageSize * @pageIndex + 1;
51 SET @RowEnd = @RowStart + @pageSize - 1;
52 END
53 ELSE
54 BEGIN
55 SET @RowStart = 1;
56 SET @RowEnd = 999999;
57 END
58
59 IF ISNULL(@pageSize, 0) <> 0
60 BEGIN
61 SET @sql =
62 'With CTE_CustRelatedInfo as (
63 SELECT ROW_NUMBER () OVER (ORDER BY t.CustId ASC) AS RowNumber, t.*
64 FROM (
65 SELECT ci.CustId --客户编号
66 ,
67 ci.CustNam --客户名称
68 ,
69 ci.ContactBy --联系人
70 ,
71 ci.Conacts --联系电话
72 ,
73 ci.Addr -- 联系地址
74 ,
75 ci.Notes --备注信息
76 ,
77 ai2.AreaNam --区域名称,省份名称
78 ,
79 ISNULL(cc.CType, '') AS CType--合同类型
80 ,
81 ISNULL(caat.ArTotal, 0.0) AS ArTotal --截止到当月底,云想系统账欠款余额
82 FROM CustInfo AS ci
83 INNER JOIN AreaInfo AS ai
84 ON ci.AreaCode = ai.AreaCode
85 INNER JOIN AreaInfo AS ai2
86 ON ai.PareaCode = ai2.AreaCode
87 LEFT JOIN CustContract AS cc
88 ON cc.CustId = ci.CustId
89 LEFT JOIN CustArApTotal AS caat
90 ON ci.CustId = caat.CustId
91 WHERE ci.CustCatagory = 1
92
93 UNION ALL
94
95 SELECT ci.CustId --客户编号
96 ,
97 ci.CustNam --客户名称
98 ,
99 ci.ContactBy --联系人
100 ,
101 ci.Conacts --联系电话
102 ,
103 ci.Addr -- 联系地址
104 ,
105 ci.Notes --备注信息
106 ,
107 ai2.AreaNam --区域名称,省份名称
108 ,
109 ISNULL(cc.CType, '') AS CType--合同类型
110 ,
111 ISNULL(caat.ArTotal, 0) AS ArTotal --截止到当月底,云想系统账欠款余额
112 FROM CustInfo AS ci
113 INNER JOIN AreaInfo AS ai
114 ON ci.AreaCode = ai.AreaCode
115 INNER JOIN AreaInfo AS ai2
116 ON ai.PareaCode = ai2.AreaCode
117 INNER JOIN CustContract AS cc
118 ON cc.CustId = ci.CustId
119 LEFT JOIN CustArApTotal AS caat
120 ON ci.CustId = caat.CustId
121 WHERE ci.CustCatagory = 2
122 )
123 AS t
124 WHERE 1=1 ';--此处CTE表达式右括号不写,在后面根据条件判断,追加
125 END
126 ELSE
127 BEGIN
128 SET @sql =
129 'SELECT t.*
130 FROM (
131 SELECT ci.CustId --客户编号
132 ,ci.CustNam --客户名称
133 ,
134 ci.ContactBy --联系人
135 ,
136 ci.Conacts --联系电话
137 ,
138 ci.Addr -- 联系地址
139 ,
140 ci.Notes --备注信息
141 ,
142 ai2.AreaNam --区域名称,省份名称
143 ,
144 ISNULL(cc.CType, '') AS CType--合同类型
145 ,
146 ISNULL(caat.ArTotal, 0.0) AS ArTotal --截止到当月底,云想系统账欠款余额
147 FROM CustInfo AS ci
148 INNER JOIN AreaInfo AS ai
149 ON ci.AreaCode = ai.AreaCode
150 INNER JOIN AreaInfo AS ai2
151 ON ai.PareaCode = ai2.AreaCode
152 LEFT JOIN CustContract AS cc
153 ON cc.CustId = ci.CustId
154 LEFT JOIN CustArApTotal AS caat
155 ON ci.CustId = caat.CustId
156 WHERE ci.CustCatagory = 1
157
158 UNION ALL
159
160 SELECT ci.CustId --客户编号
161 ,
162 ci.CustNam --客户名称
163 ,
164 ci.ContactBy --联系人
165 ,
166 ci.Conacts --联系电话
167 ,
168 ci.Addr -- 联系地址
169 ,
170 ci.Notes --备注信息
171 ,
172 ai2.AreaNam --区域名称,省份名称
173 ,
174 ISNULL(cc.CType, '') AS CType--合同类型
175 ,
176 ISNULL(caat.ArTotal, 0) AS ArTotal --截止到当月底,云想系统账欠款余额
177 FROM CustInfo AS ci
178 INNER JOIN AreaInfo AS ai
179 ON ci.AreaCode = ai.AreaCode
180 INNER JOIN AreaInfo AS ai2
181 ON ai.PareaCode = ai2.AreaCode
182 INNER JOIN CustContract AS cc
183 ON cc.CustId = ci.CustId
184 LEFT JOIN CustArApTotal AS caat
185 ON ci.CustId = caat.CustId
186 WHERE ci.CustCatagory = 2
187 )
188 AS t
189 WHERE 1=1 ';
190 END
191
192 IF ISNULL(@custId, '') <> ''
193 BEGIN
194 --根据客户id查询
195 SET @Sql = @Sql + ' AND t.CustId like ''%' + @custId + '%''';
196 END
197
198 IF ISNULL(@custNam, '') <> ''
199 BEGIN
200 --根据客户名称 模糊查询
201 SET @Sql = @Sql + ' AND t.CustNam like ''%' + @custNam + '%''';
202 END
203
204 IF ISNULL(@areaNam, '') <> ''
205 BEGIN
206 --根据区域、省份名称
207 SET @Sql = @Sql + ' AND t.AreaNam like ''%' + @areaNam + '%''';
208 END
209
210 IF ISNULL(@pageSize, 0) <> 0
211 BEGIN
212 SET @Sql = @Sql + ') ';
213
214 SET @SqlCount = @Sql +
215 ' SELECT @Temp = COUNT(*) FROM CTE_CustRelatedInfo;';
216
217 SET @SqlSelectResult = @Sql +
218 ' SELECT * FROM CTE_CustRelatedInfo
219 WHERE RowNumber Between ' + CONVERT(VARCHAR(10), @RowStart)
220 +
221 ' And ' + CONVERT(VARCHAR(10), @RowEnd) + ';';
222
223 PRINT (@SqlSelectResult);--打印输出sql语句
224
225 EXEC sp_executesql @SqlSelectResult;--执行sql查询
226
227 EXEC sp_executesql @SqlCount,
228 N'@Temp int output',
229 @totalRowCount OUTPUT ; --执行count统计
230 END
231 ELSE
232 BEGIN
233 SET @Sql = @sql + ' order by t.CustId ASC ';
234 SET @totalRowCount = 0; --总记录数
235 PRINT (@Sql);--打印输出sql语句
236 EXEC (@Sql);----打印输出sql语句
237 END
238
239 SET NOCOUNT OFF;
240 END
241 GO