【报表】帆软报表设计小技巧1—巧妙使用参数


DECLARE @today DATETIME,								-- 今天
		@month_bg DATETIME,
		@month_end DATETIME
		
set @today=${if(len(月份)=0," getdate()","'2020-"+月份+"-01'")}

SELECT @month_bg= CONVERT(VARCHAR(8),@today,120)+'01'   -- 本月初日期
select @month_end=dateadd(day,-1,convert(varchar(8),dateadd(m,1,@month_bg),120)+'1 00:00:00') -- 本月末日期

SELECT field0326 一级部门,field0327 二级部门,field0328 三级部门,field0329 四级部门,CASE WHEN field0327 IS NULL THEN field0326 
	WHEN field0328 IS NULL AND field0327 IS NOT null THEN field0326+field0327
	WHEN field0329 IS NULL AND field0328 IS NOT NULL AND field0327 IS NOT NULL THEN field0326+field0327+field0328
	ELSE field0326+field0327+field0328+field0329 END 部门,	COUNT(field0002) 人数
FROM formmain_10037 WHERE field0003<=@today AND (field0192 IS NULL OR field0192 >@today)
and field0327 in('技术中心' ,'郑州技术部','武汉技术部')

--一级部门
AND  CASE  (SELECT COUNT(1) FROM formmain_62430 t  WHERE t.field0015 IN (1,2,3,4)  AND t.field0003 = '${fine_username}' ) WHEN 0 THEN 1 
     else  CASE WHEN  
	 field0326 IN (SELECT distinct t.field0004  FROM formmain_62430 t  WHERE  t.field0015 IN (1,2,3,4)  AND t.field0003 = '${fine_username}'  ) THEN 1 end
	 END   =1        
--二级部门
AND  CASE  (SELECT COUNT(1) FROM formmain_62430 t  WHERE t.field0015 IN (2,3,4)  AND t.field0003 = '${fine_username}' ) WHEN 0 THEN 1 
     else  CASE WHEN  
	 field0327 IN (SELECT distinct t.field0005  FROM formmain_62430 t  WHERE  t.field0015 IN (2,3,4)  AND t.field0003 = '${fine_username}'  ) THEN 1 end
	 END   =1        

--三级部门
AND  CASE  (SELECT COUNT(1) FROM formmain_62430 t  WHERE t.field0015 IN (3,4)  AND t.field0003 = '${fine_username}' ) WHEN 0 THEN 1 
     else  CASE WHEN  
	 field0328 IN (SELECT distinct t.field0006  FROM formmain_62430 t  WHERE  t.field0015 IN (3,4)  AND t.field0003 = '${fine_username}'  ) THEN 1 end
	 END   =1     
	    
--四级部门
AND  CASE  (SELECT COUNT(1) FROM formmain_62430 t  WHERE t.field0015 IN (4)  AND t.field0003 = '${fine_username}' ) WHEN 0 THEN 1 
     else  CASE WHEN  
	 field0329 IN (SELECT distinct t.field0007  FROM formmain_62430 t  WHERE  t.field0015 IN (4)  AND t.field0003 = '${fine_username}'  ) THEN 1 end
	 END   =1 
    
GROUP BY field0326,field0327,field0328,field0329

set @today=${if(len(月份)=0," getdate()","'year(getdate())"+"-"+月份+"-01'")}   --自由设置日期

sqlserver 根据权限表匹配数据权限

--一级部门
AND  CASE  (SELECT COUNT(1) FROM formmain_62430 t  WHERE t.field0015 IN (1,2,3,4)  AND t.field0003 = '${fine_username}' ) WHEN 0 THEN 1 
     else  CASE WHEN  
     field0326 IN (SELECT distinct t.field0004  FROM formmain_62430 t  WHERE  t.field0015 IN (1,2,3,4)  AND t.field0003 = '${fine_username}'  ) THEN 1 end
     END   =1        
--二级部门
AND  CASE  (SELECT COUNT(1) FROM formmain_62430 t  WHERE t.field0015 IN (2,3,4)  AND t.field0003 = '${fine_username}' ) WHEN 0 THEN 1 
     else  CASE WHEN  
     field0327 IN (SELECT distinct t.field0005  FROM formmain_62430 t  WHERE  t.field0015 IN (2,3,4)  AND t.field0003 = '${fine_username}'  ) THEN 1 end
     END   =1        

--三级部门
AND  CASE  (SELECT COUNT(1) FROM formmain_62430 t  WHERE t.field0015 IN (3,4)  AND t.field0003 = '${fine_username}' ) WHEN 0 THEN 1 
     else  CASE WHEN  
     field0328 IN (SELECT distinct t.field0006  FROM formmain_62430 t  WHERE  t.field0015 IN (3,4)  AND t.field0003 = '${fine_username}'  ) THEN 1 end
     END   =1     
        
--四级部门
AND  CASE  (SELECT COUNT(1) FROM formmain_62430 t  WHERE t.field0015 IN (4)  AND t.field0003 = '${fine_username}' ) WHEN 0 THEN 1 
     else  CASE WHEN  
     field0329 IN (SELECT distinct t.field0007  FROM formmain_62430 t  WHERE  t.field0015 IN (4)  AND t.field0003 = '${fine_username}'  ) THEN 1 end
     END   =1 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值