Mysql:显示另一列下方的列的值

标签 mysql sql

我真的陷入了这个困境。我通过准备一条可执行语句尝试了联合。我非常清楚 SQL 不是一种用于此类任务的语言,但到目前为止,目标是创建一个原型(prototype)。实际的技术实现将在稍后进行。

我会解释我的要求。

有一个临时表,我在其中存储名称、项目以及与该项目相关的功能。列将行存储为:

示例数据:

   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', ' '

我希望该开发人员的功能、支持或任何状态显示在各个开发人员的下方。

这在查询级别可能吗?我知道,必须使用聚合函数。

此外,是否可以动态绑定(bind)变量,以便特定行的值写在列下方?

谢谢

最佳答案

$db=new mysqli("localhost","root","","test");

$result=$db->query("select date,project_id,name ... from tableName");

while(list($date,$project_id,$name)=$result->fetch_row()){
   echo "<div class='record'>";
      echo "<div class='field'><strong>Date:</strong> $date</div>";
      echo "<div class='field'><strong>Project:</strong> $project_id</div>";
      echo "<div class='field'><strong>Name:</strong> $name</div>";
   echo "</div>";

 }

关于Mysql:显示另一列下方的列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40778837/

相关文章:

php - 如何在PHP上创建目录路径

php - 如何在 SQLite 中获取最后一个插入 ID?

mysql - 使用 mysql 合并来自不同表的两列

mysql - 将 MySQL 数据库连接到 Apache Superset

mysql - 中间表多值查找

sql - MS SQL Server - 游标什么时候好?

SQL Server : Invalid Column Name

mysql - 获取会计年度的总和并相应地对 SQL 结果进行分组

java - 三路 hibernate ORM 映射 - 如何?

android - 庞大MySQL数据库的高效搜索