I have already tried various proposed solutions here but none of them have proposed what I need.
I need one result of 2 Queries with each one WHERE condition of 1 Table. No Union result please. Both query results need to be in different Columns packed in one result. Let me show you what I mean:
Query 1:

SELECT
tbl_Abteilungen.Bezeichnung AS Abteilung,
COUNT(tbl_Abteilungen.abteilungen_id) AS [Offene Abteilungstermine]
FROM
tbl_Lieferschein
INNER JOIN
tbl_Positionen ON tbl_Lieferschein.lieferschein_id = tbl_Positionen.id_lieferschein
INNER JOIN
tbl_Positionen_Abteilungen ON tbl_Positionen.positionen_id = tbl_Positionen_Abteilungen.id_positionen
INNER JOIN
tbl_Abteilungen ON tbl_Positionen_Abteilungen.id_abteilungen = tbl_Abteilungen.abteilungen_id
WHERE
tbl_Positionen_Abteilungen.fertiggestellt = 0
AND tbl_Lieferschein.fertiggestellt = 0
AND tbl_Lieferschein.gelöscht = 0
GROUP BY
tbl_Abteilungen.Bezeichnung
Query 2:

SELECT
COUNT(tbl_Abteilungen.abteilungen_id) AS [Überfällige Abteilungstermine]
FROM
tbl_Lieferschein
INNER JOIN
tbl_Positionen ON tbl_Lieferschein.lieferschein_id = tbl_Positionen.id_lieferschein
INNER JOIN
tbl_Positionen_Abteilungen ON tbl_Positionen.positionen_id = tbl_Positionen_Abteilungen.id_positionen
INNER JOIN
tbl_Abteilungen ON tbl_Positionen_Abteilungen.id_abteilungen = tbl_Abteilungen.abteilungen_id
WHERE
tbl_Positionen_Abteilungen.fertiggestellt = 0
AND tbl_Lieferschein.fertiggestellt = 0
AND tbl_Lieferschein.gelöscht = 0
AND tbl_Positionen_Abteilungen.Abteilungstermin < CAST(GETDATE() AS DATE)
GROUP BY
tbl_Abteilungen.Bezeichnung
All I need is a result like the following:
Needed result:

PS: The best would be, if all null results would be shown as '0'
You've basically got two queries that you then join together on tbl_Abteilungen.Bezeichnung
So like this:
SELECT ISNULL(A.Abteilung, B.Abteilung) AS Abteilung, ISNULL(A.[Offene Abteilungstermine],0) AS [Offene Abteilungstermine],
ISNULL(B.[Überfällige Abteilungstermine],0) AS [Überfällige Abteilungstermine]
FROM (SELECT tbl_Abteilungen.Bezeichnung AS Abteilung,
COUNT(tbl_Abteilungen.abteilungen_id) AS [Offene Abteilungstermine]
FROM tbl_Lieferschein
INNER JOIN tbl_Positionen ON tbl_Lieferschein.lieferschein_id = tbl_Positionen.id_lieferschein
INNER JOIN tbl_Positionen_Abteilungen ON tbl_Positionen.positionen_id = tbl_Positionen_Abteilungen.id_positionen
INNER JOIN tbl_Abteilungen ON tbl_Positionen_Abteilungen.id_abteilungen = tbl_Abteilungen.abteilungen_id
WHERE tbl_Positionen_Abteilungen.fertiggestellt = 0
AND tbl_Lieferschein.fertiggestellt = 0
AND tbl_Lieferschein.gelöscht = 0
GROUP BY tbl_Abteilungen.Bezeichnung) A
FULL OUTER JOIN
(SELECT tbl_Abteilungen.Bezeichnung AS Abteilung, COUNT(tbl_Abteilungen.abteilungen_id) AS [Überfällige Abteilungstermine]
FROM tbl_Lieferschein
INNER JOIN tbl_Positionen ON tbl_Lieferschein.lieferschein_id = tbl_Positionen.id_lieferschein
INNER JOIN tbl_Positionen_Abteilungen ON tbl_Positionen.positionen_id = tbl_Positionen_Abteilungen.id_positionen
INNER JOIN tbl_Abteilungen ON tbl_Positionen_Abteilungen.id_abteilungen = tbl_Abteilungen.abteilungen_id
WHERE tbl_Positionen_Abteilungen.fertiggestellt = 0
AND tbl_Lieferschein.fertiggestellt = 0
AND tbl_Lieferschein.gelöscht = 0 AND tbl_Positionen_Abteilungen.Abteilungstermin < cast(GETDATE() AS DATE)
GROUP BY tbl_Abteilungen.Bezeichnung) B
ON A.Abteilung = B.Abteilung
i.e. your two queries as sub-queries, with a FULL OUTER JOIN. Note that in the second query I've added tbl_Abteilungen.Bezeichnung AS Abteilung as a SELECT column to make the join possible.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With