gpt4 book ai didi

mysql - 我想计算动态创建的周数列的值数

转载 作者:行者123 更新时间:2023-11-29 18:34:54 26 4
gpt4 key购买 nike

我有一个表emp_sample,其中包含字段emp_code、alloc_date、alloc_hrs。我想为mysql过程中的任意数量的记录动态显示每周分配的总小时数,其中年和周数作为列名这是我的代码

SET @sql = NULL;
SET SESSION group_concat_max_len = 1000000;
SELECT GROUP_CONCAT(DISTINCT
(CONCAT ('MAX(CASE WHEN alloc_date=''',
alloc_date,
''' THEN concat(alloc_hrs) END) `',
year(alloc_date),date_format(alloc_date,'%b'),week(alloc_date),
'week`'
))
)
INTO @sql
FROM emp_sample;
SET @sql = CONCAT('SELECT emp_code, ', @sql,' FROM emp_sample group by emp_code');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

我想要我的输出像

emp_code        julweek30 julweek31  ......
2145 5 3
2146 4 2

该值应该是每周每个 emp_code 的计数(alloc_date)。我希望仅使用 mysql 来完成此操作

最佳答案

看起来您需要临时存储第一个查询的结果并使用它来形成第二个查询,我建议如下:

  • 更改第一个查询,使其返回 alloc_datelabel在结果中,而不仅仅是 alloc_date ,例如:

    date | label
    31/7/2017 | julweek31

  • 获取内存中的结果(使用php/java代码)

  • 迭代结果并动态生成第二个查询。对于第一个结果中的每一行,都会有一个内部 SELECT第二个查询中的语句,例如:

    SELECT es.emp_code,
    (SELECT COUNT(*) FROM emp_sample WHERE emp_code = es.emp_code AND alloc_date = <date_of_row_1>) AS <label_of_row_1>
    FROM emp_sample es
    GROUP BY es.emp_code

    内数SELECT语句将等于第一个查询返回的行数。

这应该会给你想要的结果。

关于mysql - 我想计算动态创建的周数列的值数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45386736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com