2016-07-11 7 views
1

Ich habe eine Abfrage, die Daten aus 2 Tabellen erhält.SQL Server: Rückgabewert in bestimmten Tabelle2 Spalte basierend auf Wert in Tabelle1

  • Transaction Tabelle enthält week_id, customer_id, upc12, sales_dollars
  • Products Tabelle enthält upc12, Spalte_1, column_2, column_3

ich meine Abfrage wollen den Wert in Produkten Tisch zurückzukehren, auf das, was Die customer_id ist in der Transaktionstabelle. customer_id = 1 sollte zurückkehren column_1, customer_id = 2 sollte column_3 zurückkehren usw.

SELECT 
    t.week_id, 
    customer_id, 
    upc12, 
    p.___________ sum(t.sales_dollars) 
FROM 
    transaction t, products p 
WHERE 
    t.upc_12 = p.upc_12 
GROUP BY 
    t.week_id, customer_id, upc12, p.___________ 

Sorry, wenn dies keinen Sinn macht, aber meine Forschung ist nicht sehr gut, da ich weiß nicht, wie richtig meine Frage zu formulieren. Du hast wahrscheinlich vermutet, dass ich neu in SQL bin.

Danke!

+0

[Schlechte Gewohnheiten zu treten: im alten Stil mit JOIN] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08 /bad-habits-to-kick-using-old-style-joins.aspx) - diese alte * durch Kommas getrennte Liste von Tabellen * style wurde durch die * richtige * ANSI 'JOIN'-Syntax in der ANSI- * ersetzt. * 92 ** SQL Standard (** vor mehr als 20 Jahren **) und dessen Verwendung wird abgeraten –

+0

Sie können dies nicht richtig formatieren..ist das, was Sie meinen: Wählen Sie ... aus Transaktion t JOIN Produkte p ON t.upc12 = p.upc12? – Nickstoy

+0

Sie wollen also eine Case-Anweisung? z.B. 'case customer_id wenn 1 dann col1 wenn 2 dann col3 end '? – ZLK

Antwort

0

ist hier eine Möglichkeit, es zu tun:

;WITH cte as 
(
SELECT 
    t.week_id, 
    customer_id, 
    upc12, 
    CASE customer_id 
     WHEN 1 THEN p.Column_1 
     WHEN 2 THEN p.Column_2 
     WHEN 3 THEN p.Column_3 
    END As ColByCustomer, 
    t.sales_dollars 
FROM transaction t 
INNER JOIN products p on t.upc_12 = p.upc_12 
) 

SELECT week_id, customer_id, upc12, ColByCustomer, SUM(sales_dollars) 
FROM cte 
GROUP BY week_id, customer_id, upc12, ColByCustomer 
+0

danke !! Der CASE ist genau das, was ich brauchte, ich kannte diese Funktion nicht. einfach erstaunlich! – Nickstoy

+0

Gut zu helfen :-). Wenn eine Antwort Ihr Problem gelöst hat, sollten Sie es als akzeptiert markieren, damit andere wissen, dass das Problem gelöst ist. –

Verwandte Themen