公司OA系统中想创建一个视图来做报表,遇到问题,求大神指导
公司OA系统中想做一个统计报表,使用后台的MSSQL视图来完成。小弟不才,SQL水平非常有限,求大神指导。问题如下:
有一张流程表单,称为表A。其中表A中有各位领导的审批意见,现在想做个视图将表中数据与各领导的审批意见放到视图里。表A中其他信息都可以直接取,但是审批意见是链接到另外一个表B中。
比如:OA流程表单中 显示的是督办人意见为:请尽快办理,同意;审批人意见为:不同意,其中XX有问题。而在后台SQL中内容为:
表A flow_id 督办人意见 审批人意见
23 5567 4432
表B flow_id main_id sentence
23 5567 请尽快办理,同意
23 4432 不同意,其中XX有问题
其中对应OA中同一张流程表单,表A中flow_id等于表B中flow_id。表A中一行记录对应表B中多行记录。
现在想做一个视图来展示表A中各个字段与审批意见中的内容。现在不晓得将A中一行数据与B中多行数据共同建立视图要怎么写,自己尝试过。但是不行,求大神指导。
[解决办法]
- SQL code
CREATE TABLE A (FLOW_ID INT,[督办人id]INT,[审批人] INT)INSERT INTO a select 23,5567,4432CREATE TABLE b (FLOW_ID INT,main_id INT,sentence NVARCHAR(320))INSERT INTO B SELECT 23,5567,N'请尽快办理,同意' UNION SELECT 23,4432,N'不同意,其中XX有问题'CREATE VIEW V_VIEWASSELECT A.*,B.sentence FROM A JOIN B ON A.FLOW_ID=B.FLOW_ID AND ([督办人id]=MAIN_ID OR [审批人]=MAIN_ID)/*FLOW_ID 督办人id 审批人 sentence23 5567 4432 请尽快办理,同意23 5567 4432 不同意,其中XX有问题*/
[解决办法]
- SQL code
-->测试数据IF OBJECT_ID('tb1')IS NOT NULLDROP TABLE tb1GOCREATE TABLE tb1 ( flow_id INT, [督办人id] INT, [审批人] INT)INSERT INTO tb1SELECT 23, 5567, 4432IF OBJECT_ID('tb2')IS NOT NULLDROP TABLE tb2GOCREATE TABLE tb2 ( flow_id INT, main_id INT, sentence NVARCHAR(320))INSERT INTO tb2SELECT 23, 5567, N'请尽快办理,同意'UNION ALLSELECT 23, 4432, N'不同意,其中XX有问题'-->测试查询SELECT a.*, b.sentenceFROM tb1 a LEFT JOIN tb2 b ON a.flow_id = b.flow_id AND ([督办人id] = main_id OR [审批人] = main_id)----------------------/*FLOW_ID 督办人id 审批人 sentence23 5567 4432 不同意,其中XX有问题23 5567 4432 请尽快办理,同意*/