Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

TSQL - Tabelle mit Kosten pro Monat und Jahr in View über mehrere Jahre übernehmen.

Frage Entwicklung Datenbanken

Mitglied: Grinskeks

Grinskeks (Level 1) - Jetzt verbinden

08.01.2015, aktualisiert 09.01.2015, 847 Aufrufe, 2 Kommentare

Hallo allerseits,

derzeit habe ich ein Problemchen mit der Realisierung folgender Anforderung:

Für ein Projektmanagement-Tool sollen Kosten pro Projekt, Task,Fiskaljahr und Monat erfasst werden. Die Tabelle sieht so aus:

[ID]
,[Month]
,[FiscalYear]
,[Costs]
,[ProjectID]
,[PrjTaskID]

Beispieldaten:

Die ID's sind alle uniqueidentifier.

Month | FiscalYear | Costs

1 | 14 | 25
2 | 14 | 25
3 | 14 | 25
5 | 14 | 25
5 | 15 | 25

Nun geht es darum, diese Kosten auf einen Zeitstrahl zu visualisieren.Was ich final eigentlich möchte, ist eine View,die pro Projekttask über die komplette Laufzeit des Projekts, also quasi vom geringsten Fiskaljahr ausgehend, bis zu sieben Jahre in die Zukunft darstellt:

ProjectID, PrjTaskID, Min(FiscalYear) as FY_Begin, [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12], .....[84]


Dafür habe ich bereits eine View gemacht, die das per Fiskaljahr, Projekt und Task zusammenfasst:


SELECT [FiscalYear]
,[ProjectID]
,[PrjTaskID]
,cast([1] as numeric(12,3)) as [1]
,cast([2] as numeric(12,3)) as [2]
,cast([3] as numeric(12,3)) as [3]
,cast([4] as numeric(12,3)) as [4]
,cast([5] as numeric(12,3)) as [5]
,cast([6] as numeric(12,3)) as [6]
,cast([7] as numeric(12,3)) as [7]
,cast([8] as numeric(12,3)) as [8]
,cast([9] as numeric(12,3)) as [9]
,cast([10] as numeric(12,3)) as [10]
,cast([11] as numeric(12,3)) as [11]
,cast([12] as numeric(12,3)) as [12]

FROM
(SELECT
[Month]
,Costs
,FiscalYear
,[ProjectID]
,[PrjTaskID]
FROM
Actual_Costs

)A
PIVOT(SUM(Costs) FOR [Month] in
(
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]
)
) PVT


Diese gibt mir im Beispiel zwei Zeilen mit Fiskaljahr,ProjectID, PrjTaskID und 12 Monaten. nur wie komme ich nun auf die 84 Monate und vor allem wie bekomme ich die Reihenfolge über die Fiskaljahre aufsteigend. gruppiert über ProjektID und PrjTaskID hin?

Bin für jeden Ansatz dankbar, wie ich daraus eine View machen kann. Falls es keine View werden kann, würde ich einen Trigger auf die Actual_Costs erstellen, der mir die Daten jeweils horizontal in eine Tabelle schreibt - das wäre aus meiner Sicht allerdings suboptimal (redundant, fehleranfällig, komplex zu debuggen und verwalten).

Viele Grüße
Grinskeks



Mitglied: MadMax
LÖSUNG 08.01.2015, aktualisiert 09.01.2015
Hallo Grinskeks,

wenn ich dich richtig verstanden habe, dann meinst Du sowas in der Art:
01.
with	Zahlen as (select 1 as i union all select 2 union all select 3 union all select 4 union all select 5), 
02.
	MehrZahlen as (select t1.i from Zahlen t1 cross join Zahlen t2 cross join Zahlen t3), 
03.
	Folge as (select top (84) row_number () over (order by i) as i from MehrZahlen), 
04.
	MinJahr as (select ProjectID, min (FiscalYear) as FY_Begin from Actual_Costs group by ProjectID), 
05.
	PrjTask as (select distinct ProjectID, PrjTaskID from Actual_Costs) 
06.
SELECT FY_Begin 
07.
,[ProjectID] 
08.
,[PrjTaskID] 
09.
,cast([1] as numeric(12,3)) as [1] 
10.
,cast([2] as numeric(12,3)) as [2] 
11.
,cast([3] as numeric(12,3)) as [3] 
12.
,cast([4] as numeric(12,3)) as [4] 
13.
,cast([5] as numeric(12,3)) as [5] 
14.
,cast([6] as numeric(12,3)) as [6] 
15.
,cast([7] as numeric(12,3)) as [7] 
16.
,cast([8] as numeric(12,3)) as [8] 
17.
,cast([9] as numeric(12,3)) as [9] 
18.
,cast([10] as numeric(12,3)) as [10] 
19.
,cast([11] as numeric(12,3)) as [11] 
20.
,cast([12] as numeric(12,3)) as [12] 
21.
,cast([13] as numeric(12,3)) as [13] 
22.
,cast([14] as numeric(12,3)) as [14] 
23.
,cast([15] as numeric(12,3)) as [15] 
24.
,cast([16] as numeric(12,3)) as [16] 
25.
,cast([17] as numeric(12,3)) as [17] 
26.
,cast([18] as numeric(12,3)) as [18] 
27.
,cast([19] as numeric(12,3)) as [19] 
28.
,cast([20] as numeric(12,3)) as [20] 
29.
,cast([21] as numeric(12,3)) as [21] 
30.
,cast([22] as numeric(12,3)) as [22] 
31.
,cast([23] as numeric(12,3)) as [23] 
32.
,cast([24] as numeric(12,3)) as [24] 
33.
,cast([25] as numeric(12,3)) as [25] 
34.
,cast([26] as numeric(12,3)) as [26] 
35.
,cast([27] as numeric(12,3)) as [27] 
36.
,cast([28] as numeric(12,3)) as [28] 
37.
,cast([29] as numeric(12,3)) as [29] 
38.
,cast([30] as numeric(12,3)) as [30] 
39.
,cast([31] as numeric(12,3)) as [31] 
40.
,cast([32] as numeric(12,3)) as [32] 
41.
,cast([33] as numeric(12,3)) as [33] 
42.
,cast([34] as numeric(12,3)) as [34] 
43.
,cast([35] as numeric(12,3)) as [35] 
44.
,cast([36] as numeric(12,3)) as [36] 
45.
,cast([37] as numeric(12,3)) as [37] 
46.
,cast([38] as numeric(12,3)) as [38] 
47.
,cast([39] as numeric(12,3)) as [39] 
48.
,cast([40] as numeric(12,3)) as [40] 
49.
,cast([41] as numeric(12,3)) as [41] 
50.
,cast([42] as numeric(12,3)) as [42] 
51.
,cast([43] as numeric(12,3)) as [43] 
52.
,cast([44] as numeric(12,3)) as [44] 
53.
,cast([45] as numeric(12,3)) as [45] 
54.
,cast([46] as numeric(12,3)) as [46] 
55.
,cast([47] as numeric(12,3)) as [47] 
56.
,cast([48] as numeric(12,3)) as [48] 
57.
,cast([49] as numeric(12,3)) as [49] 
58.
,cast([50] as numeric(12,3)) as [50] 
59.
,cast([51] as numeric(12,3)) as [51] 
60.
,cast([52] as numeric(12,3)) as [52] 
61.
,cast([53] as numeric(12,3)) as [53] 
62.
,cast([54] as numeric(12,3)) as [54] 
63.
,cast([55] as numeric(12,3)) as [55] 
64.
,cast([56] as numeric(12,3)) as [56] 
65.
,cast([57] as numeric(12,3)) as [57] 
66.
,cast([58] as numeric(12,3)) as [58] 
67.
,cast([59] as numeric(12,3)) as [59] 
68.
,cast([60] as numeric(12,3)) as [60] 
69.
,cast([61] as numeric(12,3)) as [61] 
70.
,cast([62] as numeric(12,3)) as [62] 
71.
,cast([63] as numeric(12,3)) as [63] 
72.
,cast([64] as numeric(12,3)) as [64] 
73.
,cast([65] as numeric(12,3)) as [65] 
74.
,cast([66] as numeric(12,3)) as [66] 
75.
,cast([67] as numeric(12,3)) as [67] 
76.
,cast([68] as numeric(12,3)) as [68] 
77.
,cast([69] as numeric(12,3)) as [69] 
78.
,cast([70] as numeric(12,3)) as [70] 
79.
,cast([71] as numeric(12,3)) as [71] 
80.
,cast([72] as numeric(12,3)) as [72] 
81.
,cast([73] as numeric(12,3)) as [73] 
82.
,cast([74] as numeric(12,3)) as [74] 
83.
,cast([75] as numeric(12,3)) as [75] 
84.
,cast([76] as numeric(12,3)) as [76] 
85.
,cast([77] as numeric(12,3)) as [77] 
86.
,cast([78] as numeric(12,3)) as [78] 
87.
,cast([79] as numeric(12,3)) as [79] 
88.
,cast([80] as numeric(12,3)) as [80] 
89.
,cast([81] as numeric(12,3)) as [81] 
90.
,cast([82] as numeric(12,3)) as [82] 
91.
,cast([83] as numeric(12,3)) as [83] 
92.
,cast([84] as numeric(12,3)) as [84] 
93.
 
94.
FROM 
95.
(select	t.ProjectID, t.PrjTaskID, f.i, j.FY_Begin, c.Costs 
96.
from	PrjTask t 
97.
	join MinJahr j on j.ProjectID = t.ProjectID 
98.
	cross join Folge f 
99.
	left join Actual_Costs c on c.ProjectID = t.ProjectID and c.PrjTaskID = t.PrjTaskID and c.FiscalYear = j.FY_Begin + ((f.i - 1) / 12) and c.[Month] = ((f.i - 1) % 12) + 1 
100.
)A 
101.
PIVOT(SUM(Costs) FOR [i] in 
102.
103.
[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84] 
104.
105.
) PVT
Ob das jetzt natürlich die einfache Lösung ist, die Du suchst, weiß ich nicht. Alternative wäre aber auch noch, das in einer Prozedur aufzubereiten und ausgeben zu lassen.

Gruß, Mad Max
Bitte warten ..
Mitglied: Grinskeks
09.01.2015 um 10:34 Uhr
Hallo Mad Max,

das ist im Prinzip genau, was ich brauche - vielen Dank!

Jetzt sieht es tatsächlich einfach aus - bisher habe ich CTE nur rudimentär und auch nur für eine Query genutzt, aber damit geht ja schon so einiges


Gruss
Grinskeks
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Zweistelliges Jahr aus vorgegeben vierstelligen Jahr aus Textdatei
gelöst Frage von FahrradBatch & Shell9 Kommentare

Hallo und guten Morgen ich habe eine CSV-Datei, die Daten im folgenden Format enthält in vielen Zeilen enthält: 1234567;24.02.2018;10.03.2018;XY ...

Humor (lol)
Windows im Jahre 2256?
Information von LochkartenstanzerHumor (lol)22 Kommentare

Moin, Wenn man "Star Trek: Discovery" glauben darf, ist werden auch im Jahr 2256 noch "Windows-Leichen" die Sternenschiffe steuern. ...

Datenbanken
TSQL - Tabellen Export als Insert Statement
Frage von ooAlbertDatenbanken3 Kommentare

Hallo, ich möchte ganz gern eine Tabelle aus meiner Datenbank (SQL Server 2008 R2) programatisch exportieren, als Insert Statment. ...

Festplatten, SSD, Raid
Speicher der nächsten Jahre berechnen
Frage von RaversFestplatten, SSD, Raid10 Kommentare

Hallo zusammen, ich bin dabei neue Server bei uns anzuschaffen. Nunmehr stell ich mir die Frage, wie hoch wird ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 5 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 8 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 8 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 12 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...