Pivot Hilfe

davidlui86

Benutzer
Beiträge
5
Hallo
kann mir bitte jemand helfen. Ich müsste die Daten in eine Ansicht wie diese hier bringen:
Stunde1 Stunde2 Stunde3 .....
ObjectName1
ObjectName1
ObjectName2
....

Ich schaff es einfach nicht mit der Pivot Funktion
Hat vielleicht jemand noch eine Idee?

Declare @tt table( AttributeID int, Objectid int, zeit nvarchar (32), ValueDisp int)
insert into @tt
select
odh.AttributeID,
odh.objectID,
SUBSTRING(CONVERT(NVARCHAR, ODH.DT, 120), 1, 13) zeit,
VALUEDISP = (SELECT ODH1.Value FROM ObjDerivedAttributeHistory ODH1 with(nolock) WHERE ODH1.ID =
MAX(ODH.ID)) from ObjDerivedAttributeHistory ODH with(nolock) where
ODH.DT > DATEADD(DAY, -1, GETDATE()) and
odh.AttributeID in(726,727,728,729)and
odh.ObjectID in (select objectId from objcfg where BaseObjectID =8536)
group by SUBSTRING(CONVERT(NVARCHAR, ODH.DT, 120), 1, 13), odh.ObjectID, ODH.AttributeID
select :confused:bjectName, SUM (tt.ValueDisp) Summe, tt.zeit from @tt tt
join objcfg o on :confused:bjectID = tt.Objectid
group by tt.zeit, :confused:bjectname order by tt.zeit
 

Anhänge

  • Unbenannt2.JPG
    Unbenannt2.JPG
    46,6 KB · Aufrufe: 5
Werbung:
jo, weil ich einfach nicht weiß wie ich es einsetzen soll bei meiner abfrage.
hab schon so einiges versucht, aber ich bekomme immer wieder fehlermeldungen.
 
so ähnlich hät ichs mir gedacht...
Code:
Declare @tt table( AttributeID int, Objectid int, zeit nvarchar (32), ValueDisp int)
insert into @tt
       select
             odh.AttributeID,
             odh.objectID,
             SUBSTRING(CONVERT(NVARCHAR, ODH.DT, 120), 1, 13) zeit,
             VALUEDISP = (SELECT ODH1.Value FROM ObjDerivedAttributeHistory ODH1 with(nolock) WHERE ODH1.ID =
                    MAX(ODH.ID)) from ObjDerivedAttributeHistory ODH with(nolock) where
                    ODH.DT > DATEADD(DAY, -1, GETDATE()) and
                    odh.AttributeID in(726,727,728,729)and
                    odh.ObjectID in (select objectId from objcfg where BaseObjectID =8536)
             group by SUBSTRING(CONVERT(NVARCHAR, ODH.DT, 120), 1, 13), odh.ObjectID, ODH.AttributeID
select o.ObjectName, SUM (tt.ValueDisp) Summe, tt.zeit from @tt tt
join objcfg o on o.ObjectID = tt.Objectid
group by tt.zeit, o.Objectname order by tt.zeit
pivot
(
   objectname
   for substring(convert(NVARCHAR,zeit, 120), 11, 13) in ([01],[02],[03],[04])
)p
 

Anhänge

  • upload_2018-6-21_14-49-5.png
    upload_2018-6-21_14-49-5.png
    129,8 KB · Aufrufe: 2
Zuletzt bearbeitet:
Syntaktisch nicht ganz korrekt.
Schau doch mal in dem Link den ich gepostet habe die Beispiele an.

Wie diesen hier:

Code:
SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days,    [0], [1], [2], [3], [4] 
 FROM  (
    SELECT DaysToManufacture, StandardCost       
    FROM Production.Product) AS SourceTable 
 PIVOT  ( 
 AVG(StandardCost) 
 FOR DaysToManufacture IN ([0], [1], [2], [3], [4]) 
 ) AS PivotTable;

Der Part zwischen FROM ( und PIVOT ( muss dein SELECT von @tt sein. Es ist klar das es einen Fehler gibt wenn du die Syntax nicht einhälst :)
 
Code:
Declare @tt table( AttributeID int, Objectid int, zeit nvarchar (32), ValueDisp int)
insert into @tt
       select
             odh.AttributeID,
             odh.objectID,
             SUBSTRING(CONVERT(NVARCHAR, ODH.DT, 120), 1, 13) zeit,
             VALUEDISP = (SELECT ODH1.Value FROM ObjDerivedAttributeHistory ODH1 with(nolock) WHERE ODH1.ID =
                    MAX(ODH.ID)) from ObjDerivedAttributeHistory ODH with(nolock) where
                    ODH.DT > DATEADD(DAY, -1, GETDATE()) and
                    odh.AttributeID in(726,727,728,729)and
                    odh.ObjectID in (select objectId from objcfg where BaseObjectID =8536)
             group by SUBSTRING(CONVERT(NVARCHAR, ODH.DT, 120), 1, 13), odh.ObjectID, ODH.AttributeID


SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days,    [0], [1], [2], [3], [4]
 FROM  (
    select o.ObjectName, SUM (tt.ValueDisp) Summe, tt.zeit from @tt tt
    join objcfg o on o.ObjectID = tt.Objectid
    group by tt.zeit, o.Objectname order by tt.zeit
 PIVOT
(
    AVG(StandardCost)
    FOR DaysToManufacture IN ([0], [1], [2], [3], [4])
) AS PivotTable;

Einfach mal so ins blaue geschossen....
 
na gut... dann stimmt trotzdem das ganze pivot noch nicht...

Code:
Declare @tt table( AttributeID int, Objectid int, zeit nvarchar (32), ValueDisp int)
insert into @tt
       select  
             odh.AttributeID,
             odh.objectID,
             SUBSTRING(CONVERT(NVARCHAR, ODH.DT, 120), 1, 13) zeit,
             VALUEDISP = (SELECT ODH1.Value FROM ObjDerivedAttributeHistory ODH1 with(nolock) WHERE ODH1.ID =
                    MAX(ODH.ID)) from ObjDerivedAttributeHistory ODH with(nolock) where
                    ODH.DT > DATEADD(DAY, -1, GETDATE()) and
                    odh.AttributeID in(726,727,728,729)and
                    odh.ObjectID in (select objectId from objcfg where BaseObjectID =8536)
             group by SUBSTRING(CONVERT(NVARCHAR, ODH.DT, 120), 1, 13), odh.ObjectID, ODH.AttributeID
select  o.ObjectName, SUM (tt.ValueDisp) Summe, tt.zeit from @tt tt
join objcfg o on o.ObjectID = tt.Objectid
group by tt.zeit, o.Objectname order by tt.zeit
pivot
(
   objectname
   for substring(convert(NVARCHAR,zeit, 120), 11, 13) in ([01],[02],[03],[04])
)p
 
Werbung:
Zurück
Oben