Cześć,
Mam dane zapisane w tabeli w formie jak poniżej:
Tabela TValue:
Celem jest przedstawienie tych danych w formie
Type.Name | Color.Name | R1 (RobotId =1).Value[9] | R2 (RobotId = 2).Value[9] | R3 (RobotId = 3).Value[9] | R4 (RobotId = 4).Value[9]
Główne dane są przechowywane w formie:
Tabela TValueSet:
Chodzi o to aby wyrzucić wartości z IdSignal = 9 dla tego samego IdValueSet przy różnych wartościach IdRobot
Wszystkie tabele wyglądają tak:
Tabela TColor:
Tabela TBody
Tablea TType:
Dzisiaj udało mi się zapytaniem:
select AVG(Cast([9] as DECIMAL (9,2))) as Volume, ColorName as ColorNumber, TypName, IdRobot
from
(Select TColor.Name as ColorName, TType.Name as TypName, IdRobot, TimeStamp, IdSignal, Value, IdColor from TValue left join TValueSet on TValueSet.Id = TValue.IdValueSet left join TColor on TColor.Id = TValueSet.IdColor join TBody on TBody.Id = TValueSet.IdBody left join TType on TType.Id = TBody.IdType where IdRobot <> 1) as SourceTable
PIVOT
(MIN(Value) FOR IdSignal IN ([9])) as PivotTable
where TimeStamp > '2018-01-01 06:00:00' and TimeStamp < '2018-02-23 07:00:00' and TypName = 'T001'
group by IdColor,ColorName, TypName, IdRobot
Uzyskać wynik prawie dobry. Potrzebował bym tylko zrobić w jednej kolumnie wyniki dla różnego IdRobot.
Dzisiaj wygląda to tak:
Jakieś pomysły?
Dzięki wielkie