如何提交时,实时查询数据库表,然后将查询到的结果在报表填报属性中写入,然后入库

image.pngsql("FRformal", "WITH TaskCounts AS (

    SELECT

        a.User_Id,

        (

            SELECT 

                COUNT(b.User_Id)

            FROM PD_Users b

            LEFT JOIN VIEW_Project c ON c.Scorer_Personnel = b.User_Id

            LEFT JOIN VIEW_Project_Process d ON d.Project_Id = c.Project_Id AND d.Project_Node = c.Project_Node

            WHERE b.Position = '询价工程师'

                AND d.Project_Process = '待复核评分'

                AND (d.Project_State = 1 OR d.Project_State = 3)

                AND b.User_Id = a.User_Id 

                AND is_mark = '否'

        ) AS task_count

    FROM

        PD_Users a

    WHERE

        a.Position = '询价工程师'

        AND a.Data_State = 1 

        AND a.User_Id IN (SELECT person_id FROM PD_Allocation_Region)

),

MinTaskCount AS (

    SELECT MIN(task_count) AS min_task_count

    FROM TaskCounts

),

MinTaskUsers AS (

    SELECT User_Id

    FROM TaskCounts

    WHERE task_count = (SELECT min_task_count FROM MinTaskCount)

),

MinTaskUsersCount AS (

    SELECT COUNT(*) AS min_task_users_count

    FROM MinTaskUsers

),

RegionFilteredUsers AS (

    SELECT person_id

    FROM PD_Allocation_Region

    WHERE area = '${AD7}'

)

SELECT User_Id

FROM MinTaskUsers

WHERE 

    (SELECT min_task_users_count FROM MinTaskUsersCount) > 1

    AND User_Id IN (SELECT person_id FROM RegionFilteredUsers)

UNION ALL

SELECT User_Id

FROM MinTaskUsers

WHERE 

    (SELECT min_task_users_count FROM MinTaskUsersCount) = 1", 1, 1)

这个sql有点复杂,是可以查询出结果的,但是写在报表填报属性的单元格函数中就不行,是格式有问题,还是不支持呢

FineReport ii起风了 发布于 2024-8-28 14:56
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于2024-8-28 14:58

拼接问题

sql("FRformal", "WITH TaskCounts AS (

    SELECT

        a.User_Id,

        (

            SELECT 

                COUNT(b.User_Id)

            FROM PD_Users b

            LEFT JOIN VIEW_Project c ON c.Scorer_Personnel = b.User_Id

            LEFT JOIN VIEW_Project_Process d ON d.Project_Id = c.Project_Id AND d.Project_Node = c.Project_Node

            WHERE b.Position = '询价工程师'

                AND d.Project_Process = '待复核评分'

                AND (d.Project_State = 1 OR d.Project_State = 3)

                AND b.User_Id = a.User_Id 

                AND is_mark = '否'

        ) AS task_count

    FROM

        PD_Users a

    WHERE

        a.Position = '询价工程师'

        AND a.Data_State = 1 

        AND a.User_Id IN (SELECT person_id FROM PD_Allocation_Region)

),

MinTaskCount AS (

    SELECT MIN(task_count) AS min_task_count

    FROM TaskCounts

),

MinTaskUsers AS (

    SELECT User_Id

    FROM TaskCounts

    WHERE task_count = (SELECT min_task_count FROM MinTaskCount)

),

MinTaskUsersCount AS (

    SELECT COUNT(*) AS min_task_users_count

    FROM MinTaskUsers

),

RegionFilteredUsers AS (

    SELECT person_id

    FROM PD_Allocation_Region

    WHERE area = '"+AD7+"'

)

SELECT User_Id

FROM MinTaskUsers

WHERE 

    (SELECT min_task_users_count FROM MinTaskUsersCount) > 1

    AND User_Id IN (SELECT person_id FROM RegionFilteredUsers)

UNION ALL

SELECT User_Id

FROM MinTaskUsers

WHERE 

    (SELECT min_task_users_count FROM MinTaskUsersCount) = 1", 1, 1)

==============

主要是这边原因

image.png

最佳回答
0
shirokoLv6资深互助
发布于2024-8-28 14:59

image.png这个不行,这里实际是字符串,不能用数据集那套,应该改成 sql("xxx","语句前半段....='"+AD7+"' 语句后半段",1,1)

最佳回答
0
青春只因年少Lv6中级互助
发布于2024-8-28 15:00(编辑于 2024-8-28 15:01)
  • 4关注人数
  • 151浏览人数
  • 最后回答于:2024-8-28 15:01
    请选择关闭问题的原因
    确定 取消
    返回顶部