首页 > 解决方案 > 来自两个表的动态列

问题描述

我需要帮助。我想将 sql 中的两个表与动态列结合起来。这里是我的想法:

表一:

select processname, step, steplabel, username, incident, indate, outdate, status from jrincidents

示例表 jrincidents

表二:

select username, department from jrusers

示例表 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

标签: sqlsql-server

解决方案


如果我理解正确,您只想根据条件将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

推荐阅读