我真的陷入了这个困境。我通过准备一条可执行语句尝试了联合。我非常清楚 SQL 不是一种用于此类任务的语言,但到目前为止,目标是创建一个原型。实际的技术实施将在稍后发生。
我会解释我的要求。
有一个临时表,我在其中存储名称、项目以及与该项目相关的功能。列将行存储为:
样本数据:
project, Tracker, resource_name, Total_Hours, date, project_counts,
'Slim', 'Feature', 'babu.balakrishnan', '39', '2016-10-22', '20'
'Slim', 'Feature', 'prasenjit.ghosh', '1.5', '2016-10-22', '2'
'Slim', 'Feature', 'shamim.akhtar', '3', '2016-10-22', '2'
'Slim', 'Support', 'babu.balakrishnan', NULL, '2016-10-22', '1'
'Slim', 'Support', 'shamim.akhtar', '3', '2016-10-22', '2'
我希望输出以这种方式显示:
babu.balakrishnan Slim 2016-10-22
Feature 20
Support 1
prasenjit.ghosh Slim
Feature 3
我知道如何在一行中显示开发人员名称、项目名称和日期,但我不知道如何继续在项目名称下方显示项目状态。此外,这仅适用于一名开发人员。我需要对与开发人员关联的所有项目重复此操作,然后也对其他开发人员重复此操作。
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'CASE WHEN date = ''',
date,
''' then project_counts end AS `', date, '`' )
ORDER BY date ) INTO @sql
FROM finance_dashboard.resource_utilization_data;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'CASE WHEN project = ''',
project,
''' then Tracker end AS `', ' ' , '`' )
ORDER BY date ) INTO @sql2
FROM finance_dashboard.resource_utilization_data;
SET @sql = CONCAT('select distinct resource_name, project
,',@sql, ' from finance_dashboard.resource_utilization_data
union
select '''' ,', @sql2, '," " FROM
finance_dashboard.resource_utilization_data group by
Tracker');
我得到的输出是:
'babu.balakrishnan', 'Slim', '20'
'prasenjit.ghosh', 'Slim', '2'
'shamim.akhtar', 'Slim', '2'
'babu.balakrishnan', 'Slim', '1'
'', 'Feature', ' '
我希望该开发人员的功能、支持或任何状态对于各个开发人员来说都显示在“苗条”以下。
这在查询级别可能吗?我知道,必须使用聚合函数。
另外,是否可以动态绑定变量,以便特定行的值写在列下方?
Thanks