Domanda

Per segnalare purcposes, ho bisogno di Pivot risultati di una query che è unico in ogni record. La mia dichiarazione corrente è:

SELECT *
FROM Sales AS x
WHERE (select count(*) from Sales where customer_name=x.customer_name 
        and order_date>=x.order_date)<=5
ORDER BY customer_name, order_date, price;

Un esempio dell'output di query è:

customer_name    order_date        price
Company A        2009-02-01        800 
Company A        2009-03-01        100
Company A        2009-04-01        200
Company A        2009-05-01        300
Company A        2009-06-01        500
Company B        2009-02-01        100
Company B        2009-02-01        800
Company B        2009-04-01        200
Company B        2009-05-01        300
Company B        2009-06-01        500

In definitiva, l'informazione deve assomigliare a questo:

Customer_Name     order_date1  price1    order_date2  price2    order_date3  price3    order_date4  price4    order_date5  price5   
Company A         2009-02-01   800       2009-03-01   100       2009-04-01   200       2009-05-01   300       2009-06-01   500
Company B         2009-02-01   100       2009-02-01   800       2009-04-01   200       2009-05-01   300       2009-06-01   500

sto pensando che ho bisogno di aggiungere una colonna per "pivot_id" in modo che ci sia un record comune per ogni raggruppamento in modo che il risultato della query prima che il pivot sarà simile a:

pivot_id  customer_name    order_date        price
1         Company A        2009-02-01        800 
2         Company A        2009-03-01        100
3         Company A        2009-04-01        200
4         Company A        2009-05-01        300
5         Company A        2009-06-01        500
1         Company B        2009-02-01        100
2         Company B        2009-02-01        800
3         Company B        2009-04-01        200
4         Company B        2009-05-01        300
5         Company B        2009-06-01        500

Cosa statment SQL genererà un numero di registrazione automatica per ogni acquisto, ma anche ricominciare con ogni customer_name ??

Lavorare in Access 2007 con il costruttore di codice SQL. Sarebbe bello se la soluzione è compatibile con Access.

Scusate per la lunghezza. Grazie in anticipo.

È stato utile?

Soluzione

Come su un altro subquery correlata? Salva la tua ricerca, dite come Query1 (probabilmente si desidera eliminare la clausola ORDER BY da questa query intermedia - solo bisogno di ordinare il gruppo di risultati finale):

SELECT Q1.customer_name, Q1.order_date, Q1.price, 
       (
        SELECT COUNT(*) + 1
          FROM MyQuery AS Q2
         WHERE Q2.customer_name = Q1.customer_name
               AND Q2.order_date < Q1.order_date
       ) AS pivot_id
  FROM MyQuery AS Q1;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top