Ich versuche, etwas kombiniertes Ergebnis von zwei separaten einzelnen Tabellen zu holen. Die Tabelle transaction_fact hat ungefähr 3,6 Millionen Zeilen und translation_table hat ungefähr 300000 Zeilen. Nun möchte ich eine Summe des Betrags für alle Transaktionen nach Standort und das Produkt in diesem Ort gruppiert. Aber da die Faktentabelle nur eine Orts-ID und Produkt-ID hat und ich die Namen im Ergebnis haben möchte, verwende ich eine Unterabfrage.SQL Unterabfrage going heywire
Meine Frage lautet wie folgt:
SELECT
(SELECT translation
FROM translation_table
WHERE dim_name LIKE 'location_dim'
AND lang_id LIKE 'es'
AND dim_id LIKE CAST(o.loc_id AS CHAR(50))
AND field_name LIKE 'city') AS Location
, (SELECT product_name
FROM prod_dim
WHERE prod_id = o.prod_id) AS Product
, SUM(amount)
FROM transaction_fact o
GROUP
BY loc_id
, prod_id
ORDER
BY loc_id
, prod_id;
Aber diese Abfrage wird nichts zurückkehrte, hält nur auf die Verarbeitung. Ich wartete etwa anderthalb Stunden, aber immer noch kein Ergebnis.
Bitte sagen Sie mir, was schief gehen könnte.
Dies könnte die seltsamste Abfrage sein, die ich seit einer Weile gesehen habe. Wenn Sie möchten, sollten Sie diese einfache Vorgehensweise in zwei Schritten befolgen: 1. Wenn Sie dies noch nicht getan haben, stellen Sie geeignete DDLs (und/oder einen SQL-Server) bereit, damit wir das Problem leichter replizieren können. 2. Wenn Sie dies noch nicht getan haben, geben Sie eine gewünschte Ergebnismenge ein, die den Informationen in Schritt 1 entspricht. – Strawberry
Sie sollten sich die JOINs ansehen –
Das Schema für Tabellen und Spalten ist in den Kommentaren der Antwort 1 angegeben Das gewünschte Ergebnis ist die Summe des Transaktionsbetrags, gruppiert über Standort und Produkt ... dh die Summe des Gesamtbetrags für alle Transaktionen für ein Produkt an einem Standort ... Die Ergebnistabelle sollte folgende Spalten enthalten: Ort | Produkt | Total_amount –