2016-11-24 2 views
0

Я действительно застрял в этом. Я попытался объединиться, подготовив исполняемый файл. Я очень хорошо знаю, что SQL не является языком, предназначенным для таких задач, но на данный момент целью является создание прототипа. Фактические технические реализации произойдут позже.Mysql: Отображать значения столбца под другим столбцом

Я объясню свои требования.

Существует временная таблица, в которой я храню имя, проект и функции, связанные с этим проектом. Столбцы хранят строки как:

Образец данных:

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

Я хочу Feature, поддержка или независимо от статуса для этого разработчика, появится ниже тонкий, для соответствующих разработчиков.

Возможно ли это на уровне запроса? Я знаю, что необходимо использовать агрегатную функцию.

Кроме того, возможно ли связывать переменные dyamically, так что значение конкретной строки записывается ниже столбца?

Благодаря

+0

ли число фиксированных дат, или они переменные? На первый взгляд, я бы сказал, что это то, что лучше всего будет обрабатывать на вашем уровне приложения (PHP?). –

+0

Да. Даты не являются проблемой. SQL будет запущен для даты начала и окончания. Единственное, что мне нужно показать, это данные, которые хранятся в сводной таблице. К сожалению, на данный момент не рекомендуется использовать любой другой язык программирования. –

+0

Ваши выборочные данные и результат не выстраиваются в линию, по крайней мере, неясно, как добраться до него. Просьба привести воспроизводимый пример. –

ответ

0
$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>"; 

}