I-Ausgang von zwei Abfragen zusammenführen möchten -Gruppierung mit Union verursacht Fehler
select top(10) hex_code from dbo.colors
Ausgang -
+----------+
| hex_code |
+----------+
| #2ecc71 |
| #3498db |
| #9b59b6 |
| #f1c40f |
| #e67e22 |
| #e74c3c |
| #2980b9 |
| #2c3e50 |
| #27ae60 |
| #f39c12 |
+----------+
Abfrage -
SELECT top(10) [Product], count([Product]) as Count
FROM [dbo].[TableA] group by [Product] order by count([Product]) desc
Ausgang -
+---------+-------+
| Product | Count |
+---------+-------+
| A | 105 |
| B | 99 |
| C | 87 |
| D | 75 |
| E | 56 |
| F | 52 |
| G | 37 |
| I | 18 |
| K | 16 |
| L | 15 |
+---------+-------+
Ich habe versucht, UNION
zu verwenden, um die Ausgabe zusammenzuführen, aber die Gruppierung nach Klausel lässt mich nicht. Ich bin mir nicht sicher, wie ich es mit der Klausel GROUP BY und ORDER BY verwenden soll.
Ich versuchte -
SELECT top(10) [Product], count([Product]) as Count
FROM [dbo].[TableA] group by [Product] order by count([Product]) desc
UNION
select top(10) hex_code from dbo.colors
Aber dies führt zu Fehler. Gibt es eine andere Möglichkeit, diese beiden Spalten zusammenzuführen?
EDIT - Erwartete Ausgabe
+---------+-------+----------+
| Product | Count | Hex Code |
+---------+-------+----------+
| A | 105 | #2ecc71 |
| B | 99 | #3498db |
| C | 87 | #9b59b6 |
+---------+-------+----------+
for all 10 rows.
Mit ScaisEdge Antwort, kommt das heraus wie
A 105 #27ae60
A 105 #2980b9
Hinweis - Beide Säulen holen Top-10-Datensätze. Beide Tabellen sind nicht verwandt. (Nein beitritt, nehme ich an)
Wenn Sie eine Vereinigung tun müssen Sie die gleiche Anzahl der Spalten in jeder Abfrage. Ihre erste gibt 2 Spalten zurück und die zweite gibt nur 1 zurück. (Union in SQL bedeutet nur das Stapeln von Ergebnissen) – Massanu
Wenn Bot-Tabellen nicht verwandt sind, wie lautet die Logik zum Anzeigen von Hex-Code (# 2ecc71) für Produkt A – TheGameiswar
Die Ausgabe ist weiter an eine JS-Bibliothek weitergegeben, die dritte Spalte als Farbwert erwartet. –