码迷,mamicode.com
首页 > 数据库 > 详细

常用SQL语句3(MSSQL)

时间:2015-08-29 16:45:16      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

  1 --IF EXISTS FUNCTION fn_GET_PRESENT_STS THEN DORP IT OR CREATE IT
  2 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fn_GET_PRESENT_STS)
  3     DROP FUNCTION [dbo].[fn_GET_PRESENT_STS]
  4 GO
  5 
  6 CREATE FUNCTION fn_GET_PRESENT_STS(@p_status INT) 
  7 RETURNS VARCHAR(60) 
  8 AS 
  9 BEGIN 
 10 DECLARE @l_rtn varchar(60) 
 11 SET 
 12   @l_rtn=CASE 
 13       WHEN @p_status=0 THEN Rejected 
 14       WHEN @p_status=1 THEN Accepted
 15       WHEN @p_status=2 THEN Pending
 16       WHEN @p_status=3 THEN Submitting
 17       WHEN @p_status=4 THEN Error
 18       WHEN @p_status=5 THEN Cleared
 19       WHEN @p_status=6 THEN Clearing
 20       ELSE N/A 
 21       END 
 22   RETURN @l_rtn 
 23 END
 24 GO
 25 
 26 --IF EXISTS FUNCTION fn_GET_ACC_VERIFY_STS THEN DORP IT OR CREATE IT
 27 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fn_GET_ACC_VERIFY_STS)
 28     DROP FUNCTION [dbo].[fn_GET_ACC_VERIFY_STS]
 29 GO
 30 
 31 CREATE FUNCTION fn_GET_ACC_VERIFY_STS(@acc_status INT) 
 32 RETURNS VARCHAR(60) 
 33 AS 
 34 BEGIN 
 35 DECLARE @l_rtn varchar(60) 
 36 SET 
 37   @l_rtn=CASE 
 38       WHEN @acc_status=0 THEN Mismatched 
 39       WHEN @acc_status=1 THEN Matched
 40       WHEN @acc_status=2 THEN Undetermined
 41       WHEN @acc_status=3 THEN Rejected
 42       WHEN @acc_status=4 THEN Pending
 43       ELSE N/A 
 44       END 
 45   RETURN @l_rtn 
 46 END
 47 GO
 48 
 49 --IF EXISTS FUNCTION fn_GET_CRD_STS THEN DORP IT OR CREATE IT
 50 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fn_GET_CRD_STS)
 51     DROP FUNCTION [dbo].[fn_GET_CRD_STS]
 52 GO
 53 
 54 CREATE FUNCTION fn_GET_CRD_STS(@crd_status INT) 
 55 RETURNS VARCHAR(60) 
 56 AS 
 57 BEGIN 
 58 DECLARE @l_rtn varchar(60) 
 59 SET 
 60   @l_rtn=CASE 
 61       WHEN @crd_status=0 THEN Not Granted 
 62       WHEN @crd_status=1 THEN Granted
 63       WHEN @crd_status=2 THEN Reverted
 64       WHEN @crd_status=3 THEN Error
 65       WHEN @crd_status=4 THEN Submitting
 66       ELSE N/A 
 67       END 
 68   RETURN @l_rtn 
 69 END
 70 GO
 71 
 72 --IF EXISTS FUNCTION fn_GET_CHANNEL THEN DORP IT OR CREATE IT
 73 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fn_GET_CHANNEL)
 74     DROP FUNCTION [dbo].[fn_GET_CHANNEL]
 75 GO
 76 
 77 CREATE FUNCTION fn_GET_CHANNEL(@cust_1 VARCHAR(10), @p_tp INT ) 
 78 RETURNS VARCHAR(60) 
 79 AS 
 80 BEGIN 
 81 DECLARE @l_rtn varchar(60) 
 82 SET 
 83   @l_rtn=CASE 
 84       WHEN @cust_1=IB THEN iBanking 
 85       WHEN @cust_1=FC THEN FCDB
 86       WHEN @cust_1=CW THEN Corp Website
 87       WHEN @cust_1 IS NULL AND @p_tp=2 THEN HKICL Portal
 88       ELSE @cust_1 
 89       END 
 90   RETURN @l_rtn 
 91 END
 92 GO
 93 
 94 --IF EXISTS FUNCTION fn_GET_GROUP THEN DORP IT OR CREATE IT
 95 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fn_GET_GROUP)
 96     DROP FUNCTION [dbo].[fn_GET_GROUP]
 97 GO
 98 
 99 CREATE FUNCTION fn_GET_GROUP(@cust_2 VARCHAR(20)) 
100 RETURNS VARCHAR(60) 
101 AS 
102 BEGIN 
103 DECLARE @l_rtn varchar(60) 
104 SET 
105   @l_rtn=CASE 
106       WHEN @cust_2=PR THEN Personal 
107       WHEN @cust_2=BB THEN Business Banking
108       WHEN @cust_2=CP THEN Corporate
109       ELSE @cust_2 
110       END 
111   RETURN @l_rtn 
112 END
113 GO
114 
115 --IF EXISTS FUNCTION fn_GET_PRODUCT THEN DORP IT OR CREATE IT
116 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fn_GET_PRODUCT)
117     DROP FUNCTION [dbo].[fn_GET_PRODUCT]
118 GO
119 
120 CREATE FUNCTION fn_GET_PRODUCT(@cust_3 VARCHAR(20)) 
121 RETURNS VARCHAR(60) 
122 AS 
123 BEGIN 
124 DECLARE @l_rtn varchar(60) 
125 SET 
126   @l_rtn=CASE 
127       WHEN @cust_3=CASA THEN CASA 
128       WHEN @cust_3=CC THEN Credit Card
129       WHEN @cust_3=LOAN THEN Loans
130       WHEN @cust_3=INSU THEN Insurance
131       ELSE @cust_3 
132       END 
133   RETURN @l_rtn 
134 END
135 GO
136 
137 --IF EXISTS FUNCTION fn_GET_RETURN_REASON DORP IT OR CREATE IT
138 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fn_GET_RETURN_REASON)
139     DROP FUNCTION [dbo].[fn_GET_RETURN_REASON]
140 GO
141 
142 CREATE FUNCTION fn_GET_RETURN_REASON(@present_val INT) 
143 RETURNS VARCHAR(100) 
144 AS 
145 BEGIN 
146 DECLARE @l_rtn varchar(100) 
147 SET 
148   @l_rtn=CASE 
149       WHEN @present_val=1 THEN Refer To Drawer ( + cast(@present_val as varchar(50)) + ) 
150       WHEN @present_val=3 THEN Drawn against uncollected funds ( +cast(@present_val as varchar(50)) + )
151       WHEN @present_val=4 THEN Payer Account Closed ( + cast(@present_val as varchar(50)) + )
152       WHEN @present_val=6 THEN e-Cheque Is Out-of-date ( + cast(@present_val as varchar(50)) + )
153       WHEN @present_val=7 THEN Post-dated e-Cheque ( + cast(@present_val as varchar(50)) + ) 
154       WHEN @present_val=8 THEN Payment Countermanded By The Drawer ( + cast(@present_val as varchar(50)) + )
155       WHEN @present_val=26 THEN Not Drawn On This Bank ( + cast(@present_val as varchar(50)) + )
156       WHEN @present_val=27 THEN Others ( + cast(@present_val as varchar(50)) + )
157       WHEN @present_val=28 THEN Duplicated Presentment ( + cast(@present_val as varchar(50)) + ) 
158       WHEN @present_val=29 THEN Invalid e-Cheque ( + cast(@present_val as varchar(50)) + )
159       WHEN @present_val=30 THEN e-Cheque Already Drawn ( + cast(@present_val as varchar(50)) + )
160       WHEN @present_val=51 THEN Invalid Payee Account Or Unsupported Currency ( +cast(@present_val as varchar(50)) + )
161       WHEN @present_val=52 THEN Payee Account Not Exists ( + cast(@present_val as varchar(50)) + ) 
162       WHEN @present_val=53 THEN Invalid Payee ( + cast(@present_val as varchar(50)) + )
163       WHEN @present_val=54 THEN Invalid Payer Branch ( + cast(@present_val as varchar(50)) + )
164       WHEN @present_val=55 THEN Invalid Payer Account ( + cast(@present_val as varchar(50)) + )
165       WHEN @present_val=56 THEN Invalid Payee Bank ( + cast(@present_val as varchar(50)) + ) 
166       WHEN @present_val=57 THEN Invalid Payer Bank ( + cast(@present_val as varchar(50)) + )
167       WHEN @present_val=58 THEN e-Cheque Issued In This Currency Is Not Accepted By Payee Account ( + cast(@present_val as varchar(50)) + )
168       WHEN @present_val=61 THEN Invalid File Type ( + cast(@present_val as varchar(50)) + )
169       WHEN @present_val=62 THEN File Size Exceeded The Limits ( + cast(@present_val as varchar(50)) + ) 
170       WHEN @present_val=63 THEN Might Be A Fake e-Cheque ( + cast(@present_val as varchar(50)) + )
171       WHEN @present_val=64 THEN Invalid e-Cheque ( + cast(@present_val as varchar(50)) + )
172       WHEN @present_val=65 THEN Unsupported Currency ( + cast(@present_val as varchar(50)) + )
173       WHEN @present_val=71 THEN Presentment Already Accepted ( + cast(@present_val as varchar(50)) + ) 
174       WHEN @present_val=72 THEN Duplicated Presentment Reference ( + cast(@present_val as varchar(50)) + )
175       WHEN @present_val=73 THEN Invalid Presentment Reference ( + cast(@present_val as varchar(50)) + )
176       WHEN @present_val=74 THEN Presentment Return Already Accepted ( + cast(@present_val as varchar(50)) + )
177       WHEN @present_val=75 THEN Presentment Not Exists Or Not Accepted Previously ( + cast(@present_val as varchar(50)) + ) 
178       WHEN @present_val=76 THEN Presentment Already Submitted To Clearing ( + cast(@present_val as varchar(50)) + )
179       WHEN @present_val=99 THEN Please Contact Bank ( + cast(@present_val as varchar(50)) + )
180       ELSE null 
181       END 
182   RETURN @l_rtn 
183 END
184 GO
185 
186 --IF EXISTS FUNCTION fn_GET_ACTIVITY_NAME DORP IT OR CREATE IT
187 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fn_GET_ACTIVITY_NAME)
188     DROP FUNCTION [dbo].[fn_GET_ACTIVITY_NAME]
189 GO
190 
191 CREATE FUNCTION fn_GET_ACTIVITY_NAME(@mod_act INT, @mod_id INT) 
192 RETURNS VARCHAR(30) 
193 AS 
194 BEGIN 
195 DECLARE @l_rtn varchar(30) 
196 SET 
197   @l_rtn=CASE 
198       WHEN @mod_act=5 AND @mod_id <> 107 THEN Edit 
199       WHEN @mod_act=5 AND @mod_id=107 THEN Presentment Update
200       WHEN @mod_act=6 THEN Remove
201       WHEN @mod_act=12 THEN Handle Case
202       WHEN @mod_act=18 THEN Add/Edit
203       WHEN @mod_act=170 THEN Handle Case
204       WHEN @mod_act=180 THEN Presentment Update
205       ELSE STR(@mod_act) 
206       END 
207   RETURN @l_rtn 
208 END
209 GO
210 
211 --IF EXISTS FUNCTION fn_GET_ACT_STATUS DORP IT OR CREATE IT
212 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fn_GET_ACT_STATUS)
213     DROP FUNCTION [dbo].[fn_GET_ACT_STATUS]
214 GO
215 
216 CREATE FUNCTION fn_GET_ACT_STATUS(@act_status INT) 
217 RETURNS VARCHAR(30) 
218 AS 
219 BEGIN 
220 DECLARE @l_rtn varchar(30) 
221 SET 
222   @l_rtn=CASE 
223       WHEN @act_status=0 THEN Fail 
224       WHEN @act_status=1 THEN Success
225       WHEN @act_status=2 THEN Reject
226       WHEN @act_status=3 THEN Approve
227       ELSE STR(@act_status) 
228       END 
229   RETURN @l_rtn 
230 END
231 GO
232 
233 --IF EXISTS FUNCTION fn_GET_MOD_NAME DORP IT OR CREATE IT
234 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fn_GET_MOD_NAME)
235     DROP FUNCTION [dbo].[fn_GET_MOD_NAME]
236 GO
237 
238 CREATE FUNCTION fn_GET_MOD_NAME(@module INT) 
239 RETURNS VARCHAR(30) 
240 AS 
241 BEGIN 
242 DECLARE @l_rtn varchar(30) 
243 SET 
244   @l_rtn=CASE 
245       WHEN @module=0 THEN Name Matching Management 
246       WHEN @module=1 THEN Presentment Management
247       ELSE STR(@module) 
248       END 
249   RETURN @l_rtn 
250 END
251 GO
252 
253 --IF EXISTS FUNCTION fn_GET_STATUS DORP IT OR CREATE IT
254 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fn_GET_STATUS)
255     DROP FUNCTION [dbo].[fn_GET_STATUS]
256 GO
257 
258 CREATE FUNCTION fn_GET_STATUS(@status INT) 
259 RETURNS VARCHAR(30) 
260 AS 
261 BEGIN 
262 DECLARE @l_rtn varchar(30) 
263 SET 
264   @l_rtn=CASE 
265       WHEN @status=0 THEN Suspend 
266       WHEN @status=1 THEN Active
267       WHEN @status=2 THEN Locked
268       ELSE STR(@status) 
269       END 
270   RETURN @l_rtn 
271 END
272 GO
273 
274 
275 --IF EXISTS VIEW PRE_ITM_DETAIL_VW THEN DORP IT OR CREATE IT
276 IF EXISTS(SELECT 1 FROM sys.views WHERE name=PRE_ITM_DETAIL_VW)
277 DROP VIEW PRE_ITM_DETAIL_VW
278 GO
279 
280 CREATE VIEW PRE_ITM_DETAIL_VW 
281 AS
282 SELECT 
283     pi.P_PAYER_BANK_COD AS PAYER_BANK_CODE, 
284     pi.P_PAYEE_BRANCH AS PAYER_BRANCH_CODE,
285     REPLACE(pi.P_PAYEE_ACC,-,‘‘) as PAYEE_ACC_NUM, 
286     pi.P_CHQ_NUM AS CHQ_NUM, 
287     pi.P_CUR AS CHQ_CURRENCY,
288     pi.P_NEXT_DAY AS NEXT_DAY, 
289     pi.P_AMT AS AMOUNT, 
290     pi.P_PRESENT_AT AS PERSENT_DATE, 
291     pi.P_REF AS PRE_REF, 
292     pi.P_BANK_REF AS BANK_REF, 
293     [dbo].[fn_GET_PRESENT_STS](pi.P_PRESENT_STS) AS PRE_STATUS,
294     [dbo].[fn_GET_ACC_VERIFY_STS](pi.P_ACC_VERIFY_STS) AS ACC_VERIFY_STATUS, 
295     [dbo].[fn_GET_GROUP](pi.P_CUST_2) AS CUSTOMER_GROUP, 
296     [dbo].[fn_GET_PRODUCT](pi.P_CUST_3) AS PRODUCT, 
297     [dbo].[fn_GET_CHANNEL](pi.P_CUST_1, pi.P_TP) AS CHANNEL, 
298     [dbo].[fn_GET_RETURN_REASON](pi.P_PRESENT_VAL) AS EXCEPTION_REASON, 
299     [dbo].[fn_GET_CRD_STS](pi.P_CRD_STS) AS TRANS_STATUS, 
300     pi.P_CLEAR_DT AS CLEAR_PROCESS_DT, 
301     pi.P_CREATE_AT AS DEPOSIT_TIME, 
302     pi.P_EXP_CLEAR_DT AS EXP_CLEAR_DT
303 FROM 
304     CHQ_PRE_ITM_TBL pi
305 GO
306 
307 --IF EXISTS VIEW PRE_GROUP_SUMMARY_VW THEN DORP IT OR CREATE IT
308 IF EXISTS(SELECT 1 FROM sys.views WHERE name=PRE_GROUP_SUMMARY_VW)
309 DROP VIEW PRE_GROUP_SUMMARY_VW
310 GO
311 
312 CREATE VIEW PRE_GROUP_SUMMARY_VW
313 AS
314 SELECT 
315     v.CUSTOMER_GROUP, v.CHANNEL, v.PRESENTED, v.PENDING, v.ERROR, v.CLEARED, v.ACCEPTED, v.REJECTED, v.RETURNED, ACCEPTED+REJECTED+RETURNED as COUNTTOTAL,
316     v.ACCEPTEDAMOUNT, v.REJECTEDAMOUNT, v.RETURNEDAMOUNT, ACCEPTEDAMOUNT+REJECTEDAMOUNT+RETURNEDAMOUNT as AMOUNTTOTAL     
317 FROM (
318     SELECT 
319         pi.CUSTOMER_GROUP AS CUSTOMER_GROUP, pi.CHANNEL AS CHANNEL, 
320         SUM(CASE WHEN pi.PRE_STATUS IN (Accepted, Cleared, Clearing) OR pi.PRE_STATUS = Rejected AND pi.PERSENT_DATE IS NOT NULL THEN 1 ELSE 0 end) AS PRESENTED,
321         SUM(CASE WHEN pi.PRE_STATUS = Pending THEN 1 ELSE 0 END) AS PENDING,
322         SUM(CASE WHEN pi.PRE_STATUS = Accepted THEN 1 ELSE 0 END) AS ACCEPTED,
323         SUM(CASE WHEN pi.PRE_STATUS = Rejected THEN 1 ELSE 0 END) AS REJECTED,
324         SUM(CASE WHEN pi.PRE_STATUS = Error THEN 1 ELSE 0 end) AS ERROR,
325         SUM(CASE WHEN pi.PRE_STATUS = Cleared THEN 1 ELSE 0 END) AS CLEARED, 
326         SUM(CASE WHEN pi.PRE_STATUS = Rejected AND pi.CLEAR_PROCESS_DT IS NOT NULL THEN 1 ELSE 0 END) AS RETURNED,
327         SUM(CASE WHEN pi.PRE_STATUS = Accepted THEN pi.AMOUNT ELSE 0 END) AS ACCEPTEDAMOUNT,
328         SUM(CASE WHEN pi.PRE_STATUS = Rejected THEN pi.AMOUNT ELSE 0 END) AS REJECTEDAMOUNT,
329         SUM(CASE WHEN pi.PRE_STATUS = Rejected AND pi.CLEAR_PROCESS_DT IS NOT NULL THEN pi.AMOUNT ELSE 0 END) AS RETURNEDAMOUNT
330     FROM PRE_ITM_DETAIL_VW pi 
331     GROUP BY
332          pi.CUSTOMER_GROUP, pi.CHANNEL
333 ) v
334 GO
335 
336 --IF EXISTS VIEW PRE_PRODUCT_SUMMARY_VW THEN DORP IT OR CREATE IT
337 IF EXISTS(SELECT 1 FROM sys.views WHERE name=PRE_PRODUCT_SUMMARY_VW)
338 DROP VIEW PRE_PRODUCT_SUMMARY_VW
339 GO
340 
341 CREATE VIEW PRE_PRODUCT_SUMMARY_VW
342 AS
343 SELECT 
344     pi.PRODUCT AS PRODUCT,
345     pi.CUSTOMER_GROUP AS CUSTOMER_GROUP, 
346     SUM(CASE WHEN pi.PRE_STATUS IN (Accepted, Cleared, Clearing) OR pi.PRE_STATUS = Rejected AND pi.PERSENT_DATE IS NOT NULL THEN 1 ELSE 0 END) AS PRESENTED,
347     SUM(CASE WHEN pi.PRE_STATUS = Pending THEN 1 ELSE 0 END) AS PENDING,
348     SUM(CASE WHEN pi.PRE_STATUS = Accepted THEN 1 ELSE 0 END) AS ACCEPTED,
349     SUM(CASE WHEN pi.PRE_STATUS = Rejected THEN 1 ELSE 0 END) AS REJECTED,
350     SUM(CASE WHEN pi.PRE_STATUS = Error THEN 1 ELSE 0 END) AS ERROR,
351     SUM(CASE WHEN pi.PRE_STATUS = Cleared THEN 1 ELSE 0 END) AS CLEARED, 
352     SUM(CASE WHEN pi.PRE_STATUS = Rejected AND pi.CLEAR_PROCESS_DT IS NOT NULL THEN 1 ELSE 0 END) AS RETURNED
353 FROM PRE_ITM_DETAIL_VW pi
354 GROUP BY
355     pi.CUSTOMER_GROUP, pi.PRODUCT
356 GO
357 
358 --IF EXISTS VIEW AUDIT_TRIAL_VW THEN DORP IT OR CREATE IT
359 IF EXISTS(SELECT 1 FROM sys.views WHERE name=AUDIT_TRIAL_VW)
360 DROP VIEW AUDIT_TRIAL_VW
361 GO
362 
363 CREATE VIEW AUDIT_TRIAL_VW
364 AS
365 SELECT
366     REPLACE(lg.ACCOUNT_NO, -, ‘‘) as ACCOUNT_NO, 
367     [dbo].[fn_GET_MOD_NAME](lg.MODULE) AS MODULE, 
368     [dbo].[fn_GET_ACTIVITY_NAME](lg.ACTIVITY, lg.MODULE) AS ACTIVITY,
369     [dbo].[fn_GET_ACT_STATUS](lg.STATUS) AS STATUS,
370     lg.DETAILS, lg.MAKER_ID, lg.CHECKER_ID, 
371     lg.MAINTENANCE_DATE AS MAINTENANCE_DATE
372 FROM
373 (
374     SELECT 
375       P_PAYEE_ACC AS ACCOUNT_NO, 
376       MOD_ID AS MODULE, 
377       ACT_COD AS ACTIVITY, 
378       ACT_RESULT AS STATUS, 
379       LOG_DTL AS DETAILS, 
380       ADM_NM AS MAKER_ID, 
381       NULL AS CHECKER_ID, 
382       LOG_CREATE_AT AS MAINTENANCE_DATE
383     FROM
384     (
385         (SELECT * FROM BOA_ADM_LOG_TBL WHERE MOD_ID = 108 AND ACT_COD = 5) boa_admin JOIN CHQ_PRE_ITM_TBL chq ON (chq.P_REF = boa_admin.OBJ_ID)
386     )
387     UNION ALL
388     (
389         SELECT 
390             OBJ_ID AS ACCOUNT_NO, 
391             MOD_ID AS MODULE, 
392             ACT_COD AS ACTIVITY, 
393             ACT_RESULT AS STATUS, 
394             LOG_DTL AS DETAILS, 
395             ADM_NM AS MAKER_ID, 
396             NULL AS CHECKER_ID, 
397             LOG_CREATE_AT AS MAINTENANCE_DATE 
398         FROM 
399             BOA_ADM_LOG_TBL 
400         WHERE 
401             MOD_ID = 107 AND ACT_COD IN (6, 12, 18)
402     )
403     UNION ALL
404         SELECT 
405             P_PAYEE_ACC AS ACCOUNT_NO, 
406             MOD_ID AS MODULE, 
407             MOD_ACT AS ACTIVITY, 
408             case when CHK_ACT = 0 then 2 when CHK_ACT = 1 then 3 else 4 end AS STATUS, 
409             MAK_DESC AS DETAILS, 
410             MAK_ADM_NM AS Maker_ID, 
411             CHK_ADM_NM AS Checker_ID, 
412             CHK_HND_AT AS MAINTENANCE_DATE 
413         FROM
414           (
415               (SELECT * FROM BOA_MAK_CHK_ARC_TBL WHERE MOD_ID = 108 AND MOD_ACT = 180) maker_checker join CHQ_PRE_ITM_TBL chq ON (chq.P_REF = maker_checker.OBJ_ID)
416           )
417     UNION ALL
418     (
419         SELECT 
420             OBJ_ID as ACCOUNT_NO, 
421             MOD_ID as MODULE, 
422             MOD_ACT as ACTIVITY, 
423             case when CHK_ACT = 0 then 2 when CHK_ACT = 1 then 3 else 4 end as STATUS, 
424             MAK_DESC as DETAILS, 
425             MAK_ADM_NM as Maker_ID, 
426             CHK_ADM_NM as Checker_ID, 
427             CHK_HND_AT as MAINTENANCE_DATE 
428         FROM 
429             BOA_MAK_CHK_ARC_TBL 
430         WHERE 
431             MOD_ID = 107 AND MOD_ACT in (170, 171, 172)
432     )
433 ) lg
434 GO
435 
436 --IF EXISTS VIEW BOA_USR_TEMP_VW THEN DORP IT OR CREATE IT
437 IF EXISTS(SELECT 1 FROM sys.views WHERE name=BOA_USR_TEMP_VW)
438 DROP VIEW BOA_USR_TEMP_VW
439 GO
440 
441 CREATE VIEW BOA_USR_TEMP_VW 
442 AS
443 SELECT 
444     adm.ADM_ID USR_ID, 
445     adm.ADM_NM USER_NAME, 
446     adm.ADM_EMAIL EMAIL, 
447     adm.ADM_STS STATUS, 
448     grp.GRP_NM AUTHORITY, 
449     adm.ADM_CREATE_AT CREATE_DATE, 
450     adm.ADM_UPD_AT UPDATE_DATE 
451 FROM 
452     BOA_ADM_TBL adm 
453 JOIN 
454     BOA_ADM_GRP_MAP_TBL mapt 
455 ON 
456     (adm.ADM_ID=mapt.ADM_ID) 
457 JOIN 
458     BOA_GRP_TBL grp 
459 ON 
460     (mapt.GRP_ID=grp.GRP_ID)
461 WHERE
462     adm.ADM_STS <> 9
463 GO
464 
465 --SELECT * FROM BOA_USR_TEMP_VW GO
466 --IF EXISTS VIEW BOA_USR_VW THEN DORP IT OR CREATE IT
467 IF EXISTS(SELECT 1 FROM sys.views WHERE name=BOA_USR_VW)
468     DROP VIEW BOA_USR_VW
469 GO
470 
471 CREATE VIEW BOA_USR_VW
472 AS
473 SELECT
474      B.USR_ID,
475     B.USER_NAME, 
476     B.EMAIL, 
477     [dbo].[fn_GET_STATUS](B.STATUS) STATUS, 
478     B.CREATE_DATE, 
479     B.UPDATE_DATE, 
480     LEFT(AuthList,LEN(AuthList)-1) as AUTHORITY 
481 FROM (
482     SELECT
483         USR_ID, 
484         USER_NAME,
485         EMAIL,
486         STATUS,
487         CREATE_DATE,
488         UPDATE_DATE,
489         (SELECT AUTHORITY+, FROM BOA_USR_TEMP_VW WHERE USER_NAME=A.USER_NAME FOR XML PATH(‘‘)) AS AuthList
490     FROM 
491         BOA_USR_TEMP_VW A 
492     GROUP BY 
493         USR_ID,USER_NAME,EMAIL,STATUS,CREATE_DATE,UPDATE_DATE
494 ) B
495 GO
496 
497 --SELECT * FROM BOA_USR_VW GO
498 
499 --IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N‘[dbo].[fnTest]‘) AND xtype IN (N‘FN‘, N‘IF‘, N‘TF‘)) 
500 IF EXISTS (SELECT * FROM sysobjects WHERE xtype=fn AND NAME=fnTest)
501     DROP FUNCTION [dbo].[fnTest]
502 GO
503 
504 CREATE FUNCTION fnTest(@u int ) 
505 RETURNS varchar(60) 
506 AS 
507 BEGIN 
508 DECLARE @uu varchar(60) 
509 SET 
510   @uu=CASE 
511       WHEN @u=1 THEN 中国历史111 
512       WHEN @u=0 THEN 中国历史000
513       ELSE 中国历史 
514       END RETURN @uu 
515 END
516 GO
517 
518 SELECT 
519     [dbo].[fnTest](stuId) as a,
520     stuName as b
521 FROM 
522     STUDENT 
523 GO
524 
525 INSERT INTO student VALUES (1, 1, 张三, 爬山) GO
526 INSERT INTO student VALUES (2, 1, 张三, 爬山) GO
527 INSERT INTO student VALUES (3, 2, 李四, 打球) GO
528 INSERT INTO student VALUES (4, 2, 李四, 打球) GO
529 INSERT INTO student VALUES (5, 3, 王五, 游泳) GO
530 INSERT INTO student VALUES (6, 3, 王五, 游泳) GO
531 
532 SELECT * FROM student GO
533 
534 SELECT 
535     B.stuName,
536     LEFT(StuList,LEN(StuList)-1) as hobby 
537 FROM (
538     SELECT 
539         stuName,
540         (SELECT hobby+, FROM student WHERE stuName=A.stuName FOR XML PATH(‘‘)) AS StuList
541     FROM 
542        student A 
543     GROUP BY 
544         stuName
545 ) B
546 GO

 

常用SQL语句3(MSSQL)

标签:

原文地址:http://www.cnblogs.com/angleBlue/p/4769295.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!