2016-03-29 1 views
0

Ich frage mich, ob es möglich ist, eine for/while-Schleife in (t) SQL in dem folgenden Problem zu vermeiden.Mögliche while-Schleife in (t) -sql beim Iterieren über Schlüsselwertpaar in, wo Bedingungen

Das sind drei Tabellen: 1. KAMPAGNE: enthält eine campaign_id Säule (Camp_ID) und eine Datumsspalte (start_date) beschreibt den Beginn einer Kampagne

  1. SALE : enthält eine customer_id-Spalte (Cust_ID), eine Umsatzspalte (rev) und eine Datumsspalte (Datum), die den Umsatz eines Kunden an einem bestimmten Datum angibt.

  2. SELECTION: enthält die Zuordnungen von Kunden zu Marketingkampagne (Cust_ID) und (Camp_ID)

Was möchte ich also wissen: Welchen Umsatz haben Kunden nach der Erstellung einer Marketingkampagne erzielt?

So Python und SQL

for (CID, SD) IN CAMPAIGN: 
    SELECT Cust_ID, SUM(rev) 
    FROM SALE 
    JOIN SELECTION 
    ON SALE.Cust_ID = SELECTION.Cust_ID 
    WHERE SELECTION.Camp_Id = CID AND SALE.date > SD 

CID und SD siehe Camp_Id und start_date von CAMPAIGN

Ist es möglich, ersetzen diese für Schleife Mischen einige elemntary SQL-Syntax. Ich fand Lösungen mit Cursor und While-Schleifen, aber es könnte etwas einfacher sein, wie einige Gruppierungen und Joins ich nicht sehe.

Antwort

1

Sie diese Bedingung durch CID in einer JOIN und Gruppe setzen können:

SELECT CAMPAIGN.CID, Cust_ID, SUM(rev) 
FROM SALE 
JOIN SELECTION 
    ON SALE.Cust_ID = SELECTION.Cust_ID 
INNER JOIN CAMPAIGN 
    ON SELECTION.Camp_Id = CAMPAIGN.CID AND SALE.date > CAMPAIGN.SD 
GROUP BY CAMPAIGN.CID, Cust_ID 
+0

Dank, viel einfacher, dachte ich. – Quickbeam2k1

Verwandte Themen