369 messaggi dal 08 dicembre 2006
Buonasera a tutti, ho una query simile a questa:
select tab_source.date, 
sum(tab_source.eff1) as efficiency_1, 
sum(tab_source.eff2) as efficiency_2

from 
(select data.date, data.shift, data.id_line, 
iif(shift=1 and sum(convert(decimal(5,2),data.downtime_min))+sum(convert(decimal(5,2),data.runtime_min)))>0,sum(convert(decimal(5,2),data.runtime_min))/(sum(convert(decimal(5,2),data.downtime_min))+sum(convert(decimal(5,2),data.runtime_min)))*100,0) as eff1,
iif(shift=2 and (sum(convert(decimal(5,2),data.downtime_min))+sum(convert(decimal(5,2),data.runtime_min)))>0,sum(convert(decimal(5,2),data.runtime_min))/(sum(convert(decimal(5,2),data.downtime_min))+sum(convert(decimal(5,2),data.runtime_min)))*100,0) as eff2
               
from [db_dev].[dbo].[data]
join [db_dev].[dbo].[profiles]
  on profiles.id=data.id_profile
               where data.id_line = 3

               group by data.shift, data.date, data.id_line, profiles.speed) as tab_source 
                              
                              where 1=1
                              group by tab_source.date
                              order by tab_source.date


In pratica la visualizzazione che ottengo ora è la seguente:

DATE |EFFICIENCY_1|EFFICIENCY_2
19-3-2018|10 |20
18-3-2018|15 |25
17-3-2018|20 |30

e vorrei eseguire la funzione pivot per ottenere questa visualizzazione:
|17-3-2018|18-3-2018|19-3-2018|
EFFICIENCY_1|20 |15 |10
EFFICIENCY_2|30 |25 |20

ma purtroppo sono in stallo. Grazie in anticipo.
Modificato da inactive il 21 marzo 2018 23.26 -
944 messaggi dal 11 febbraio 2013
Forse devi fare UNPIVOT per le colonne EFFICENCY poi PIVOT per il campo DATA...

Ciao
369 messaggi dal 08 dicembre 2006
ciao e grazie per la risposta. Provo e faccio sapere.
944 messaggi dal 11 febbraio 2013
Figurati

fammi sapere

da qualche parte ho un esempio ... devo solo trovarlo

ciao
369 messaggi dal 08 dicembre 2006
ciao jjchuck...lo riesci a trovare l'esempio? non ho mai usato queste funzioni. Grazie!
944 messaggi dal 11 febbraio 2013
L'ho rifatto a naso ma funziona

non so se è esattamente quel che devi fare
ma certamente se esegui la view partendo dall'interno
puoi vedere cosa fanno le istruzioni PIVOT/UNPIVOT

spero ti aiuti
CREATE TABLE [dbo].[Test](
  [Linea] [nchar](10) NULL,
  [Obiettivo] [float] NULL,
  [Consuntivo] [float] NULL,
  [Mese] [nchar](10) NULL
) ON [PRIMARY]

INSERT INTO northwind.dbo.Test
                         (Linea, Obiettivo, Consuntivo, Mese)
VALUES        (N'A', 2000, 1000, N'1'),
        (N'A', 1000, 800, N'1'),
        (N'A', 1000, 800, N'2'),
        (N'A', 1000, 800, N'2'),
        (N'B', 1000, 800, N'1'),
        (N'B', 1000, 800, N'2'),
        (N'B', 1000, 800, N'3')


SELECT Linea, Ob1,Co1,Ob2,Co2,Ob3,Co3
FROM
(
 
 SELECT Linea, 
        CASE WHEN col = 'Obiettivo' THEN 'Ob'
         WHEN col = 'Consuntivo' THEN 'Co'
         END + cast(Mese as varchar)  new_col , value 
 FROM
 (
   SELECT *
    FROM dbo.Test
   
 )tab 
 
  UNPIVOT
  (
    value
     FOR col IN ([Obiettivo], [Consuntivo])
  )  UNPIV
 
  
)SRC
  
PIVOT (
       SUM(value) FOR new_col IN ([Ob1],[Ob2],[Ob3],
                                  [Co1],[Co2],[Co3])

) AS Pt1

369 messaggi dal 08 dicembre 2006
Grazie 1000. Provo e ti faccio sapere!
369 messaggi dal 08 dicembre 2006
niente non ci riesco proprio...sono molto lontano ancora dall'avere le righe che rappresentano i giorni e come colonne il risultato di ogni giorno...

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.