我知道这可能是之前提出过的一个问题。
但我是我自己不确定我是否以正确的方式这样做,所以我不得不问。
我想在输出
中的下表EmpID Name Desig Year Q1 Q2 Q3 Annual --------------------------------------------------------------------------------- 1 Haider 0 2016 setup setup setup AnotherString 2 Arif 1 2016 setup setup setup AnotherString
但我在db中的表是。
员工表:
EmpID Name Desig ------------------------------- 1 Haider 0 2 Arif 1
评估表
ID Title ----------------- 1 Q1 2 Q2 3 Q3 4 Annual
评估表中的值是输出表(第一个表)中的列。
我不明白我怎么能用枢轴来做到这一点。我见过例子,但不知道如何设置这样的表格。
Plus表中没有年份信息。今年将针对每位员工显示当年。
这是我试图解决的问题。但我不知道如何将其加入其他表格,那里没有任何员工信息。
SELECT
*
FROM
employee E
INNER JOIN employment ET
ON ET.`employee_id` = E.`employee_id`
AND ET.`trashed` = 0
AND ET.`current` = 1
WHERE E.`enrolled` = 1
AND E.`trashed` = 0
AND E.`employee_id` IN (8,1,3,17,6,19,23)
== - == - = - == - == - = -
更新
这是我到目前为止所尝试的内容。但是当我跑它时,我没有桌子?
SET @sql = NULL;
SELECT GROUP_CONCAT(DISTINCT AppraisalTitle) INTO @sql
FROM `ml_appraisal_title`
WHERE Trash = 0;
SET @sql = CONCAT('SELECT E.employee_id
, E.full_name AS Name, ', @sql, '
FROM employee E
LEFT JOIN ml_appraisal_title AS MLPT
ON MLPT.ID = E.employee_id
GROUP BY E.employee_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
我不太了解它。但我一直试图弄明白。
= - = - = - = - = - = - = - = - =
更新:2
我想我到达了这个地方。的xD ..
SET @sql = NULL;
SELECT GROUP_CONCAT(DISTINCT CONCAT('MAX(IF(AppraisalTitle=''',AppraisalTitle,''', AppraisalTitle, NULL)) AS ',AppraisalTitle )) INTO @sql
FROM `ml_appraisal_title`
WHERE Trash = 0;
SET @sql = CONCAT('SELECT E.employee_id
, E.full_name AS Name, ', @sql, '
FROM employee E
LEFT JOIN ml_appraisal_title AS MLPT
ON MLPT.AppraisalID = E.employee_id
GROUP BY E.employee_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
但是这个东西是列中的值需要来自另一个表。困惑我怎么能这样做。正如您在输出中看到的那样,setup
将充当链接。并且可以根据另一个表将其更改为任何其他值。
评估通知表
ID Notification ----------------- 1 setup 2 Create 3 Complete
如何从另一张桌子显示设置? 我能理解我需要加入它.. 但我在想,如果我可以使用左连接,如果值为null,则应显示设置。有可能吗?