AYUDA [Columnas a Filas]
Publicado por Raul (2 intervenciones) el 03/05/2018 18:09:01
Necesito urgentemente ayuda, el pasado viernes lo hice funcionar, pero toque el codigo en fin de semana y ahora ya no, y estoy desesperado, necesito pasar columnas a filas, sin que ningun dato se pierda, sin duplicados, que tome en cuenta la FECHA y WORKED que es el trabajador.
Tabla Original
Resultado Deseado (Casi)
Mi problema es que tanto las cantidades como los trabajadores estan en columnas, en la misma tabla estan los meses en columnas tambien, por lo que al juntar en la consulta final todos los trabajadores en una sola columna, me suma en la cantidad otras personas que no deben ir al caso, ya que donde dice 2518 Erick Molina, 2000 son en realidad de Valezka Vado para la cuenta 5-16006 para el dia 04/26/2018, por alguna razon no me divide el dia 26 y lo junta con el 27, deberia hacerme un quiebre individual tomando en cuenta que la fecha es diferente al igual que el trabajador, mi codigo es el siguiente:
SELECT DISTINCT IIf(YearRegister.Client=Clients.ID,Clients.Client) AS Client, YearRegister.RegYear, IIf(YearRegister.Account=Accounts.ID,Accounts.Account) AS Account, Accounts.Type, Accounts.Class, Accounts.Category, Accounts.AccountNo, IIf((Month(Date1)=Month(Now()) And Year(Date1)=Year(Now())),Sum(Trans1),0) AS u1, IIf((Month(Date2)=Month(Now()) And Year(Date2)=Year(Now())),Sum(Trans2),0) AS u2, IIf((Month(Date3)=Month(Now()) And Year(Date3)=Year(Now())),Sum(Trans3),0) AS u3, IIf((Month(Date4)=Month(Now()) And Year(Date4)=Year(Now())),Sum(Trans4),0) AS u4, IIf((Month(Date5)=Month(Now()) And Year(Date5)=Year(Now())),Sum(Trans5),0) AS u5, IIf((Month(Date6)=Month(Now()) And Year(Date6)=Year(Now())),Sum(Trans6),0) AS u6, IIf((Month(Date7)=Month(Now()) And Year(Date7)=Year(Now())),Sum(Trans7),0) AS u7, IIf((Month(Date8)=Month(Now()) And Year(Date8)=Year(Now())),Sum(Trans8),0) AS u8, IIf((Month(Date9)=Month(Now()) And Year(Date9)=Year(Now())),Sum(Trans9),0) AS u9, IIf((Month(Date10)=Month(Now()) And Year(Date10)=Year(Now())),Sum(Trans10),0) AS u10, IIf((Month(Date11)=Month(Now()) And Year(Date11)=Year(Now())),Sum(Trans11),0) AS u11, IIf((Month(Date12)=Month(Now()) And Year(Date12)=Year(Now())),Sum(Trans12),0) AS u12, IIf(Month(Date1)=Month(Now()) And Year(Date1)=Year(Now()),Date1,IIf(Month(Date2)=Month(Now()) And Year(Date2)=2018,Date2,IIf(Month(Date3)=Month(Now()) And Year(Date3)=Year(Now()),Date3,IIf(Month(Date4)=Month(Now()) And Year(Date4)=Year(Now()),Date4,IIf(Month(Date5)=Month(Now()) And Year(Date5)=Year(Now()),Date5,IIf(Month(Date6)=Month(Now()) And Year(Date6)=Year(Now()),Date6,IIf(Month(Date7)=Month(Now()) And Year(Date7)=Year(Now()),Date7,IIf(Month(Date8)=Month(Now()) And Year(Date8)=Year(Now()),Date8,IIf(Month(Date9)=Month(Now()) And Year(Date9)=Year(Now()),Date9,IIf(Month(Date10)=Month(Now()) And Year(Date10)=Year(Now()),Date10,IIf(Month(Date11)=Month(Now()) And Year(Date11)=Year(Now()),Date11,IIf(Month(Date12)=Month(Now()) And Year(Date12)=Year(Now()),Date12,Null)))))))))))) AS Fechas, IIf((month(Date1)=month(now()) And Year(Date1)=year(now())) And Work1<>'',Work1,IIf((month(Date2)=month(now()) And Year(Date2)=year(now())) And Work2<>'',Work2,IIf((month(Date3)=month(now()) And Year(Date3)=year(now())) And Work3<>'',Work3,IIf((month(Date4)=month(now()) And Year(Date4)=year(now())) And Work4<>'',Work4,IIf((month(Date5)=month(now()) And Year(Date5)=year(now())) And Work5<>'',Work5,IIf((month(Date6)=month(now()) And Year(Date6)=year(now())) And Work6<>'',Work6,IIf((month(Date7)=month(now()) And Year(Date7)=year(now())) And Work7<>'',Work7,IIf((month(Date8)=month(now()) And Year(Date8)=year(now())) And Work8<>'',Work8,IIf((month(Date9)=month(now()) And Year(Date9)=year(now())) And Work9<>'',Work9,IIf((month(Date10)=month(now()) And Year(Date10)=year(now())) And Work10<>'',Work10,IIf((month(Date11)=month(now()) And Year(Date11)=year(now())) And Work11<>'',Work11,IIf((month(Date12)=month(now()) And Year(Date12)=year(now())) And Work12<>'',Work12)))))))))))) AS Worked
FROM YearRegister, Accounts, Clients
WHERE YearRegister.Account=Accounts.ID and YearRegister.Client=Clients.ID and (Date1<>Null or Date2 <> Null or Date3 <> Null or Date4 <> Null or Date5 <> Null or Date6 <> Null or Date7 <> Null or Date8 <> Null or Date9 <> Null or Date10 <> Null or Date11 <> Null or Date12 <> Null) and ((month(Date1)=month(now) and Year(Date1)=year(now)) or (month(Date2)=month(now) and Year(Date2)=year(now)) or (month(Date3)=month(now) and Year(Date3)=year(now)) or (month(Date4)=month(now) and Year(Date4)=year(now)) or (month(Date5)=month(now) and Year(Date5)=year(now)) or (month(Date6)=month(now) and Year(Date6)=year(now)) or (month(Date7)=month(now) and Year(Date7)=year(now)) or (month(Date8)=month(now) and Year(Date8)=year(now)) or (month(Date9)=month(now) and Year(Date9)=year(now)) or (month(Date10)=month(now) and Year(Date10)=year(now)) or (month(Date11)=month(now) and Year(Date11)=year(now)) or (month(Date12)=month(now) and Year(Date12)=year(now)))
GROUP BY YearRegister.RegYear, Accounts.Type, Accounts.Class, Accounts.Category, Accounts.AccountNo, YearRegister.Client, Clients.ID, Clients.Client, YearRegister.Account, Accounts.ID, Accounts.Account, YearRegister.Date1, YearRegister.Date2, YearRegister.Date3, YearRegister.Date4, YearRegister.Date5, YearRegister.Date6, YearRegister.Date7, YearRegister.Date8, YearRegister.Date9, YearRegister.Date10, YearRegister.Date11, YearRegister.Date12, YearRegister.Work1, YearRegister.Work2, YearRegister.Work3, YearRegister.Work4, YearRegister.Work5, YearRegister.Work6, YearRegister.Work7, YearRegister.Work8, YearRegister.Work9, YearRegister.Work10, YearRegister.Work11, YearRegister.Work12;
*** Si no me doy a entender me escriben a mi email *** agradeceria su pronta ayuda, ademas aclaro que a mi si me llego a funcionar el viernes pasado, pero lo toque por otros motivos y cuando me fije ya no me daba el mismo resultado y ya no recuerdo que hice, lamentablemente no tengo copia anterior.
Tabla Original
Resultado Deseado (Casi)
Mi problema es que tanto las cantidades como los trabajadores estan en columnas, en la misma tabla estan los meses en columnas tambien, por lo que al juntar en la consulta final todos los trabajadores en una sola columna, me suma en la cantidad otras personas que no deben ir al caso, ya que donde dice 2518 Erick Molina, 2000 son en realidad de Valezka Vado para la cuenta 5-16006 para el dia 04/26/2018, por alguna razon no me divide el dia 26 y lo junta con el 27, deberia hacerme un quiebre individual tomando en cuenta que la fecha es diferente al igual que el trabajador, mi codigo es el siguiente:
SELECT DISTINCT IIf(YearRegister.Client=Clients.ID,Clients.Client) AS Client, YearRegister.RegYear, IIf(YearRegister.Account=Accounts.ID,Accounts.Account) AS Account, Accounts.Type, Accounts.Class, Accounts.Category, Accounts.AccountNo, IIf((Month(Date1)=Month(Now()) And Year(Date1)=Year(Now())),Sum(Trans1),0) AS u1, IIf((Month(Date2)=Month(Now()) And Year(Date2)=Year(Now())),Sum(Trans2),0) AS u2, IIf((Month(Date3)=Month(Now()) And Year(Date3)=Year(Now())),Sum(Trans3),0) AS u3, IIf((Month(Date4)=Month(Now()) And Year(Date4)=Year(Now())),Sum(Trans4),0) AS u4, IIf((Month(Date5)=Month(Now()) And Year(Date5)=Year(Now())),Sum(Trans5),0) AS u5, IIf((Month(Date6)=Month(Now()) And Year(Date6)=Year(Now())),Sum(Trans6),0) AS u6, IIf((Month(Date7)=Month(Now()) And Year(Date7)=Year(Now())),Sum(Trans7),0) AS u7, IIf((Month(Date8)=Month(Now()) And Year(Date8)=Year(Now())),Sum(Trans8),0) AS u8, IIf((Month(Date9)=Month(Now()) And Year(Date9)=Year(Now())),Sum(Trans9),0) AS u9, IIf((Month(Date10)=Month(Now()) And Year(Date10)=Year(Now())),Sum(Trans10),0) AS u10, IIf((Month(Date11)=Month(Now()) And Year(Date11)=Year(Now())),Sum(Trans11),0) AS u11, IIf((Month(Date12)=Month(Now()) And Year(Date12)=Year(Now())),Sum(Trans12),0) AS u12, IIf(Month(Date1)=Month(Now()) And Year(Date1)=Year(Now()),Date1,IIf(Month(Date2)=Month(Now()) And Year(Date2)=2018,Date2,IIf(Month(Date3)=Month(Now()) And Year(Date3)=Year(Now()),Date3,IIf(Month(Date4)=Month(Now()) And Year(Date4)=Year(Now()),Date4,IIf(Month(Date5)=Month(Now()) And Year(Date5)=Year(Now()),Date5,IIf(Month(Date6)=Month(Now()) And Year(Date6)=Year(Now()),Date6,IIf(Month(Date7)=Month(Now()) And Year(Date7)=Year(Now()),Date7,IIf(Month(Date8)=Month(Now()) And Year(Date8)=Year(Now()),Date8,IIf(Month(Date9)=Month(Now()) And Year(Date9)=Year(Now()),Date9,IIf(Month(Date10)=Month(Now()) And Year(Date10)=Year(Now()),Date10,IIf(Month(Date11)=Month(Now()) And Year(Date11)=Year(Now()),Date11,IIf(Month(Date12)=Month(Now()) And Year(Date12)=Year(Now()),Date12,Null)))))))))))) AS Fechas, IIf((month(Date1)=month(now()) And Year(Date1)=year(now())) And Work1<>'',Work1,IIf((month(Date2)=month(now()) And Year(Date2)=year(now())) And Work2<>'',Work2,IIf((month(Date3)=month(now()) And Year(Date3)=year(now())) And Work3<>'',Work3,IIf((month(Date4)=month(now()) And Year(Date4)=year(now())) And Work4<>'',Work4,IIf((month(Date5)=month(now()) And Year(Date5)=year(now())) And Work5<>'',Work5,IIf((month(Date6)=month(now()) And Year(Date6)=year(now())) And Work6<>'',Work6,IIf((month(Date7)=month(now()) And Year(Date7)=year(now())) And Work7<>'',Work7,IIf((month(Date8)=month(now()) And Year(Date8)=year(now())) And Work8<>'',Work8,IIf((month(Date9)=month(now()) And Year(Date9)=year(now())) And Work9<>'',Work9,IIf((month(Date10)=month(now()) And Year(Date10)=year(now())) And Work10<>'',Work10,IIf((month(Date11)=month(now()) And Year(Date11)=year(now())) And Work11<>'',Work11,IIf((month(Date12)=month(now()) And Year(Date12)=year(now())) And Work12<>'',Work12)))))))))))) AS Worked
FROM YearRegister, Accounts, Clients
WHERE YearRegister.Account=Accounts.ID and YearRegister.Client=Clients.ID and (Date1<>Null or Date2 <> Null or Date3 <> Null or Date4 <> Null or Date5 <> Null or Date6 <> Null or Date7 <> Null or Date8 <> Null or Date9 <> Null or Date10 <> Null or Date11 <> Null or Date12 <> Null) and ((month(Date1)=month(now) and Year(Date1)=year(now)) or (month(Date2)=month(now) and Year(Date2)=year(now)) or (month(Date3)=month(now) and Year(Date3)=year(now)) or (month(Date4)=month(now) and Year(Date4)=year(now)) or (month(Date5)=month(now) and Year(Date5)=year(now)) or (month(Date6)=month(now) and Year(Date6)=year(now)) or (month(Date7)=month(now) and Year(Date7)=year(now)) or (month(Date8)=month(now) and Year(Date8)=year(now)) or (month(Date9)=month(now) and Year(Date9)=year(now)) or (month(Date10)=month(now) and Year(Date10)=year(now)) or (month(Date11)=month(now) and Year(Date11)=year(now)) or (month(Date12)=month(now) and Year(Date12)=year(now)))
GROUP BY YearRegister.RegYear, Accounts.Type, Accounts.Class, Accounts.Category, Accounts.AccountNo, YearRegister.Client, Clients.ID, Clients.Client, YearRegister.Account, Accounts.ID, Accounts.Account, YearRegister.Date1, YearRegister.Date2, YearRegister.Date3, YearRegister.Date4, YearRegister.Date5, YearRegister.Date6, YearRegister.Date7, YearRegister.Date8, YearRegister.Date9, YearRegister.Date10, YearRegister.Date11, YearRegister.Date12, YearRegister.Work1, YearRegister.Work2, YearRegister.Work3, YearRegister.Work4, YearRegister.Work5, YearRegister.Work6, YearRegister.Work7, YearRegister.Work8, YearRegister.Work9, YearRegister.Work10, YearRegister.Work11, YearRegister.Work12;
*** Si no me doy a entender me escriben a mi email *** agradeceria su pronta ayuda, ademas aclaro que a mi si me llego a funcionar el viernes pasado, pero lo toque por otros motivos y cuando me fije ya no me daba el mismo resultado y ya no recuerdo que hice, lamentablemente no tengo copia anterior.
Valora esta pregunta
0