sql - 来自两个表的动态列
问题描述
我需要帮助。我想将 sql 中的两个表与动态列结合起来。这里是我的想法:
表一:
select processname, step, steplabel, username, incident, indate, outdate, status from jrincidents
表二:
select username, department from jrusers
我不知道如何将表 jrincidents 中的 steplabels 动态添加为 jrusers 的列 if where processname = x
感谢您的帮助
添加:
让我再试一次
结果应该看起来像这样
select distinct a.department,
(select count(b.incident) from Auswertungsvorlage_Prozess as b where b.processname = 'rechnungseingang' and b.department = a.department ) as Anzahl,
(select avg(datediff(MINUTE,n.indate,n.outdate)) as avg_min from Auswertungsvorlage_Prozess as n where n.processname = 'rechnungseingang' and n.department = a.department and n.steplabel ='Erfassung und Verteilung ') as Erfassung_und_Verteilung,
(select avg(datediff(MINUTE,c.indate,c.outdate)) as avg_min from Auswertungsvorlage_Prozess as c where c.processname = 'rechnungseingang' and c.department = a.department and c.steplabel ='Handelspartner / Bank anlegen') as Handelspartner_Bank_anlegen,
(select avg(datediff(MINUTE,d.indate,d.outdate)) as avg_min from Auswertungsvorlage_Prozess as d where d.processname = 'rechnungseingang' and d.department = a.department and d.steplabel ='Sachliche Prüfung') as Sachliche_Prüfung,
(select avg(datediff(MINUTE,e.indate,e.outdate)) as avg_min from Auswertungsvorlage_Prozess as e where e.processname = 'rechnungseingang' and e.department = a.department and e.steplabel ='Freigabe') as Freigabe,
(select avg(datediff(MINUTE,f.indate,f.outdate)) as avg_min from Auswertungsvorlage_Prozess as f where f.processname = 'rechnungseingang' and f.department = a.department and f.steplabel ='Prüfung durch den Einkauf') as Prüfung_durch_den_Einkauf,
(select avg(datediff(MINUTE,g.indate,g.outdate)) as avg_min from Auswertungsvorlage_Prozess as g where g.processname = 'rechnungseingang' and g.department = a.department and g.steplabel ='Rückfrage zur Rechnung') as Rückfrage_zur_Rechnung,
(select avg(datediff(MINUTE,h.indate,h.outdate)) as avg_min from Auswertungsvorlage_Prozess as h where h.processname = 'rechnungseingang' and h.department = a.department and h.steplabel ='Rechnung abweisen') as Rechnung_abweisen,
(select avg(datediff(MINUTE,i.indate,i.outdate)) as avg_min from Auswertungsvorlage_Prozess as i where i.processname = 'rechnungseingang' and i.department = a.department and i.steplabel ='Buchung') as Buchung,
(select avg(datediff(MINUTE,j.indate,j.outdate)) as avg_min from Auswertungsvorlage_Prozess as j where j.processname = 'rechnungseingang' and j.department = a.department and j.steplabel ='DocuWare Indexierung') as DocuWare_Indexierung,
(select avg(datediff(MINUTE,k.indate,k.outdate)) as avg_min from Auswertungsvorlage_Prozess as k where k.processname = 'rechnungseingang' and k.department = a.department and k.steplabel ='Protokoll anklammern') as Protokoll_anklammern,
(select avg(datediff(MINUTE,l.indate,l.outdate)) as avg_min from Auswertungsvorlage_Prozess as l where l.processname = 'rechnungseingang' and l.department = a.department and l.steplabel ='Anhänge anheften') as Anhänge_anheften,
(select avg(datediff(MINUTE,m.indate,m.outdate)) as avg_min from Auswertungsvorlage_Prozess as m where m.processname = 'rechnungseingang' and m.department = a.department and m.steplabel ='Übergabe an Infor') as Übergabe_an_Infor,
(select avg(datediff(MINUTE,o.indate,o.outdate)) as avg_min from Auswertungsvorlage_Prozess as o where o.processname = 'rechnungseingang' and o.department = a.department) as Zeit_Durchschnitt,
(select avg(datediff(MINUTE,p.indate,p.outdate)) * 10 as avg_cost from Auswertungsvorlage_Prozess as p where p.processname = 'rechnungseingang' and p.department = a.department) as Kosten
from Auswertungsvorlage_Prozess as a where a.processname = 'rechnungseingang';
部门和步骤标签应该像过滤器一样是动态的。
如果我将流程名称更改为“rechnungseingang”,则选择应从子表行中选择不同的步骤标签和部门动态作为选择中的列。就像从垂直(行)到水平(列)的移动。
数据表:
department step steplabel incident indate outdate processname
1 Beschaffungsantrag erfassen 897 2020-09-22 12:07:44.000 2020-09-24 11:10:29.000 beschaffung
7 A1 Entsendeantrag ergänzen 9 2020-05-19 14:33:05.000 2020-05-19 16:07:37.000 dienstreise
7 A1 Entsendeantrag ergänzen 9 2020-05-19 16:07:37.000 2020-05-19 16:09:09.000 dienstreise
10 Bestellung durch den Einkauf 61 2020-01-30 14:42:52.000 2020-02-05 13:08:18.000 beschaffung
10 Genehmigung durch die GL 1 2020-01-14 10:39:15.000 2020-01-17 12:13:44.000 investantrag
10 Genehmigung durch die GL 1 2020-01-17 12:13:45.000 2020-01-17 12:13:59.000 investantrag
20 Info zur genehmigten Dienstreise 6 2020-01-27 12:54:16.000 2020-02-06 10:59:12.000 dienstreise
20 Info zur genehmigten Dienstreise 17 2020-01-31 13:14:57.000 2020-02-06 10:59:12.000 dienstreise
50 Info zur Bestellung 61 2020-02-05 17:50:15.000 2020-02-06 10:07:24.000 beschaffung
50 Info zur Zahlung 2 2020-01-30 15:36:36.000 2020-02-06 10:29:50.000 zahlungsanweisung
50 Info zur Zahlung 2 2020-02-06 10:29:50.000 2020-02-06 10:49:24.000 zahlungsanweisung
50 Info zur Zahlung 2 2020-02-06 10:49:24.000 2020-02-06 10:49:59.000 zahlungsanweisung
AFS 1 Beschaffungsantrag erfassen 61 2020-01-27 11:40:45.000 2020-01-27 11:40:45.000 beschaffung
AFS 1 Beschaffungsantrag erfassen 82 2020-01-30 10:16:31.000 2020-01-30 10:16:31.000 beschaffung
AFS 1 Beschaffungsantrag erfassen 224 2020-03-02 11:13:42.000 2020-03-02 11:13:42.000 beschaffung
AFS 1 Beschaffungsantrag erfassen 363 2020-04-02 12:14:53.000 2020-04-02 12:14:53.000 beschaffung
AFS 1 Beschaffungsantrag erfassen 482 2020-05-13 07:36:30.000 2020-05-13 07:36:30.000 beschaffung
AFS 1 Beschaffungsantrag erfassen 784 2020-08-14 15:06:34.000 2020-08-14 15:06:34.000 beschaffung
AFS 1 Beschaffungsantrag erfassen 835 2020-09-01 08:03:53.000 2020-09-01 08:03:53.000 beschaffung
AFS 1 Beschaffungsantrag erfassen 955 2020-10-06 15:36:36.000 2020-10-06 15:36:36.000 beschaffung
AFS 1 Beschaffungsantrag erfassen 1035 2020-10-27 12:24:04.000 2020-10-27 12:24:04.000 beschaffung
AFS 1 Beschaffungsantrag erfassen 1077 2020-11-05 15:54:08.000 2020-11-05 15:54:08.000 beschaffung
AFS 20 Empfang der Ware bestätigen 82 2020-02-01 09:07:25.000 2020-03-13 10:54:14.000 beschaffung
AFS 20 Empfang der Ware bestätigen 61 2020-02-05 17:50:15.000 2020-02-28 08:45:47.000 beschaffung
AFS 20 Empfang der Ware bestätigen 224 2020-03-04 19:14:23.000 2020-03-13 10:53:56.000 beschaffung
AFS 20 Empfang der Ware bestätigen 482 2020-05-19 08:58:48.000 2020-10-06 14:54:46.000 beschaffung
AFS 50 Info zur Bestellung 61 2020-02-06 10:07:24.000 2020-02-28 08:45:08.000 beschaffung
AVK 1 Beschaffungsantrag erfassen 7 2020-01-13 15:51:45.000 2020-01-13 15:51:45.000 beschaffung
AVK 1 Beschaffungsantrag erfassen 62 2020-01-27 12:05:45.000 2020-01-27 12:05:45.000 beschaffung
AVK 1 Beschaffungsantrag erfassen 472 2020-05-08 11:01:24.000 2020-05-08 11:01:24.000 beschaffung
AVK 10 Sichtung & Bearbeitung 478 2020-08-04 09:31:38.000 2020-08-04 10:13:03.000 post
AVK 20 Empfang der Ware bestätigen 7 2020-01-22 09:03:42.000 2020-02-12 11:29:59.000 beschaffung
AVK 20 Empfang der Ware bestätigen 62 2020-01-28 16:40:02.000 2020-07-10 08:34:02.000 beschaffung
AVK 20 Empfang der Ware bestätigen 472 2020-05-12 11:39:46.000 2020-07-10 13:09:41.000 beschaffung
AVK 50 Info an Besteller 472 2020-05-12 11:39:46.000 2020-05-12 13:02:59.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 942 2020-10-02 09:37:05.000 2020-10-02 09:37:05.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 942 2020-10-02 09:50:02.000 2020-10-02 10:28:18.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 948 2020-10-06 08:23:32.000 2020-10-06 08:23:32.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 948 2020-10-06 09:09:27.000 2020-10-08 08:27:50.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 961 2020-10-08 08:35:53.000 2020-10-08 08:35:53.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 961 2020-10-08 10:00:39.000 2020-10-08 11:01:23.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 963 2020-10-08 11:10:28.000 2020-10-08 11:10:28.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 967 2020-10-12 07:51:45.000 2020-10-12 07:51:45.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 968 2020-10-12 07:57:36.000 2020-10-12 07:57:36.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 969 2020-10-12 11:09:48.000 2020-10-12 11:09:48.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 970 2020-10-12 14:22:04.000 2020-10-12 14:22:04.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 971 2020-10-12 14:24:19.000 2020-10-12 14:24:19.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 970 2020-10-12 15:25:05.000 2020-10-12 15:35:41.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 1036 2020-10-27 14:38:44.000 2020-10-27 14:38:44.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 1048 2020-10-29 10:25:16.000 2020-10-29 10:25:16.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 1051 2020-10-29 13:40:48.000 2020-10-29 13:40:48.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 1062 2020-11-03 17:38:40.000 2020-11-03 17:38:40.000 beschaffung
AVZ 1 Beschaffungsantrag erfassen 1075 2020-11-05 11:15:45.000 2020-11-05 11:15:45.000 beschaffung
AVZ 1 Einkaufsreklamation erfassen 1 2020-01-23 08:09:17.000 2020-01-23 08:09:17.000 ekreklamation
AVZ 1 Einkaufsreklamation erfassen 2 2020-01-23 08:23:23.000 2020-01-23 08:23:23.000 ekreklamation
AVZ 1 Einkaufsreklamation erfassen 3 2020-01-27 08:53:47.000 2020-01-27 08:53:47.000 ekreklamation
AVZ 1 Einkaufsreklamation erfassen 4 2020-01-31 08:48:38.000 2020-01-31 08:48:38.000 ekreklamation
AVZ 1 Einkaufsreklamation erfassen 8 2020-02-28 08:35:54.000 2020-07-09 15:42:31.000 ekreklamation
AVZ 1 Einkaufsreklamation erfassen 40 2020-09-02 09:29:52.000 2020-09-02 09:29:52.000 ekreklamation
AVZ 8 Rückfrage zur Reklamation 1 2020-01-23 15:16:59.000 2020-01-24 07:50:06.000 ekreklamation
AVZ 8 Rückfrage zur Reklamation 2 2020-01-23 15:18:06.000 2020-01-24 07:58:16.000 ekreklamation
AVZ 8 Rückfrage zur Reklamation 40 2020-09-11 11:06:20.000 2020-09-15 07:05:43.000 ekreklamation
AVZ 9 Info zur Reklamation 7 2020-01-17 08:43:14.000 2020-01-20 08:05:56.000 reklamation
AVZ 9 Info zur Reklamation 10 2020-01-21 13:11:57.000 2020-01-21 14:42:28.000 reklamation
AVZ 9 Info zur Reklamation 25 2020-03-02 13:56:48.000 2020-03-04 08:20:37.000 reklamation
AVZ 9 Info zur Reklamation 27 2020-03-04 08:16:26.000 2020-03-04 08:22:46.000 reklamation
AVZ 9 Info zur Reklamation 28 2020-03-05 08:46:19.000 2020-03-05 08:48:07.000 reklamation
AVZ 9 Info zur Reklamation 29 2020-03-05 10:34:45.000 2020-03-05 10:38:34.000 reklamation
AVZ 9 Info zur Reklamation 29 2020-03-05 10:34:46.000 2020-03-05 15:19:06.000 reklamation
AVZ 9 Info zur Reklamation 30 2020-03-06 08:26:01.000 2020-03-06 08:31:17.000 reklamation
AVZ 9 Info zur Reklamation 32 2020-03-12 13:11:21.000 2020-03-16 07:56:02.000 reklamation
AVZ 9 Info zur Reklamation 34 2020-04-06 08:10:50.000 2020-04-06 08:35:38.000 reklamation
AVZ 9 Info zur Reklamation 34 2020-04-06 08:10:51.000 2020-05-20 14:13:16.000 reklamation
AVZ 9 Info zur Reklamation 42 2020-05-20 14:03:33.000 2020-05-20 14:15:01.000 reklamation
AVZ 9 Info zur Reklamation 58 2020-08-31 08:07:24.000 2020-09-02 09:25:20.000 reklamation
AVZ 12 Stellungnahme zur Reklamation 1 2020-01-16 10:54:29.000 2020-01-21 14:42:02.000 reklamation
AVZ 12 Stellungnahme zur Reklamation 2 2020-01-16 10:55:10.000 2020-01-21 14:56:15.000 reklamation
AVZ 12 Stellungnahme zur Reklamation 22 2020-02-19 09:21:11.000 2020-02-21 12:02:54.000 reklamation
AVZ 12 Stellungnahme zur Reklamation 55 2020-08-11 14:32:50.000 2020-08-12 07:50:20.000 reklamation
AVZ 12 Stellungnahme zur Reklamation 55 2020-08-11 14:32:50.000 2020-08-31 08:09:32.000 reklamation
AVZ 18 Rückfrage zur Rechnung 2919 2020-06-04 14:21:52.000 2020-06-05 13:33:03.000 rechnungseingang
AVZ 20 Empfang der Ware bestätigen 967 2020-10-12 13:58:53.000 2020-11-03 16:28:18.000 beschaffung
AVZ 20 Empfang der Ware bestätigen 968 2020-10-12 15:33:38.000 2020-11-03 16:28:03.000 beschaffung
AVZ 20 Empfang der Ware bestätigen 969 2020-10-22 12:01:14.000 2020-11-02 15:28:52.000 beschaffung
AVZ 50 Info an Besteller 967 2020-10-12 13:58:53.000 2020-10-22 13:03:33.000 beschaffung
AVZ 50 Info an Besteller 968 2020-10-12 15:33:38.000 2020-10-22 13:03:18.000 beschaffung
AVZ 50 Info an Besteller 971 2020-10-12 16:23:39.000 2020-10-22 13:03:01.000 beschaffung
AVZ 50 Info an Besteller 970 2020-10-16 10:39:10.000 2020-10-22 13:02:46.000 beschaffung
AVZ 50 Info an Besteller 969 2020-10-22 12:01:14.000 2020-10-22 13:02:14.000 beschaffung
AVZ 50 Info zur Reklamation 2 2020-01-28 14:29:33.000 2020-03-05 15:19:34.000 ekreklamation
AVZ 50 Info zur Reklamation 4 2020-02-11 17:56:42.000 2020-03-05 15:19:54.000 ekreklamation
AVZ 50 Info zur Reklamation 1 2020-02-11 17:58:02.000 2020-03-05 15:20:14.000 ekreklamation
AVZ 50 Info zur Reklamation 3 2020-02-11 18:06:49.000 2020-03-05 15:20:40.000 ekreklamation
AVZ 50 Info zur Reklamation 8 2020-07-10 13:59:49.000 2020-07-13 07:31:59.000 ekreklamation
AVZ 50 Info zur Reklamation 40 2020-09-22 11:19:19.000 2020-09-22 12:59:27.000 ekreklamation
BLG 1 Bewegung von Anlagevermögen beantragen 1 2020-01-14 10:03:29.000 2020-01-14 10:03:29.000 anlagebewegung
BLG 1 Bewegung von Anlagevermögen beantragen 2 2020-01-14 10:04:44.000 2020-01-14 10:04:44.000 anlagebewegung
BLG 1 Bewegung von Anlagevermögen beantragen 3 2020-01-24 07:45:16.000 2020-01-24 07:45:16.000 anlagebewegung
BLG 1 Bewegung von Anlagevermögen beantragen 4 2020-01-27 11:20:56.000 2020-01-27 11:20:56.000 anlagebewegung
BLG 1 Bewegung von Anlagevermögen beantragen 5 2020-01-27 11:22:00.000 2020-01-27 11:22:00.000 anlagebewegung
解决方案
如果我理解正确,您只想根据条件将jrincidents表中的列steplabel添加到jrusers表中。
你试一试:
SELECT
a.username,
a.department,
b.steplabel
FROM jrusers a LEFT JOIN jrincidents b ON a.username = b.username
WHERE b.processname = x
推荐阅读
- html - 当背景图像中有多个图层时,如何在 CSS 中仅模糊一层?
- python - self.function 与 function 有什么区别?
- xcode - xcode 中的库文件夹为空
- jquery - 比较两个字符串数组并使用jquery返回未找到元素的键
- architecture - 我的身份服务器是否应该拥有用户配置文件?
- python - Python:无法删除Windows上的文件夹
- php - PHP 语法 $obj->{'somekey'}
- ssrs-2012 - SSRS:如何根据列值将矩阵中的值更改为负值
- embedded - 逆向工程定点数
- android - 如何将数据发布到 React js 应用程序?