Mehrfache Auswahl gegen eine Tabelle in einer Abfrage

Ich versuche, eine ausgewählte Aussage zu erstellen, die mir einen prozentualen Wert für jeden Monat und Benutzer gibt.

Ich habe einen Tisch mit Zeilen, der so aussieht. Tabellenname: pytrans

tTransDate tArtCode tTime tSignature 20120801 DKK 1 30JK 20120801 AD 1.5 30JK 20120802 DKB 3 40AK 20120903 MI 2 45TR 20120904 DKK 2 30JK 20120904 DKB 2 30JK 

Die Auswahl (n) sollte mir den Prozentsatz geben, wie viel time für tArtCode DKB oder DKK für jede Unterschrift und jeden Monat aller time für alle tArtCode ausgegeben hat. Also aus dem obigen Beispiel die Auswahl sollte mir 40% für die Unterschrift 30JK im Monat 8 und 100% für die Unterschrift 30JK im Monat 9 geben.

Ich habe versucht, verschiedene Art von sql select Aussagen aber es scheint nicht zu 100% richtig zu bekommen. Das ist was ich habe

 select DATEPART(YY, tTransdatum) AS Year, DATEPART(mm, tTransdatum) AS Month, tSignatur, (select SUM(tAntal) AS SumPart from pytrans where tSignatur = '30JK' AND (tArtikelkod = 'DKK' OR tArtikelkod = 'DKB')) /(select DATEPART(YY, tTransdatum) AS Year, DATEPART(mm, tTransdatum) AS Month, SUM(tAntal) AS SumTot from pytrans where tSignatur = '30JK' GROUP BY Year, Month, SumTot) * 100 From pytrans where tSignatur = '30JK' GROUP BY DATEPART(mm, tTransdatum), DATEPART(YY, tTransdatum), tSignatur 

Diese SQL funktioniert nicht der Fehler ist, dass ich nicht gruppieren Jahr, Monat, SumTot. Auch bekomme ich Fehler; In der Auswahlliste kann nur ein Ausdruck angegeben werden, wenn die Unterabfrage nicht mit EXISTS eingeführt wird.

Diese nächste Sql wählen Sie mir, was ich will, aber ich bin spezifisch, was ich verlange … sozusagen. Wenn ich diese sql Ich brauche dann eine SQL-Abfrage für jede Signatur und jeden Monat, und das ist nicht wirklich kreativ.

 select TOP 1 DATEPART(YY, tTransdatum) AS Year, DATEPART(mm, tTransdatum) AS Month, tSignatur, SumProc = (select SUM(tAntal) from pytrans where tSignatur = '30JK' AND (tArtikelkod NOT LIKE 'FL' AND tArtikelkod NOT LIKE 'SEM' AND tArtikelkod NOT LIKE 'KOMPIN') AND (tArtikelkod = 'DKK' OR tArtikelkod = 'DKB') AND tTransdatum BETWEEN '20121101' AND '20121131') / (select SUM(tAntal) from pytrans where tSignatur = '30JK' AND (tArtikelkod NOT LIKE 'FL' AND tArtikelkod NOT LIKE 'SEM' AND tArtikelkod NOT LIKE 'KOMPIN') AND tTransdatum BETWEEN '20121101' AND '20121131') * 100 from pytrans Where tSignatur = '30JK' AND tTransdatum BETWEEN '20121101' AND '20121131' group by tTransdatum, tSignatur 

Ich habe auch versucht Union, aber das scheint nicht für mich zu arbeiten.

Ich brauche wirklich Hilfe mit diesem! Vielen Dank!

 Create Table #pytrans(tTransdatum datetime, tArtCode varchar(10), tAntal float, tSignature varchar(10)) insert into #pytrans Values('20120801', 'DKK', 1 ,'30JK') insert into #pytrans Values('20120801', 'AD', 1.5 ,'30JK') insert into #pytrans Values('20120802', 'DKB', 3 ,'40AK') insert into #pytrans Values('20120903', 'MI', 2 ,'45TR') insert into #pytrans Values('20120904', 'DKK', 2 ,'30JK') insert into #pytrans Values('20120904', 'DKB', 2 ,'30JK') Select a.Year,a.Month,a.tSignature,a.SumPart as aAll,b.SumPart as bAll,Case when b.SumPart =0 then NULL else a.SumPart/b.SumPart * 100 end as [Percent] from (select DATEPART(YY, tTransdatum) AS Year, DATEPART(mm, tTransdatum) AS Month, tSignature ,SUM(tAntal) AS SumPart from #pytrans where tSignature = '30JK' AND tArtCode in( 'DKK' ,'DKB') Group by DATEPART(YY, tTransdatum) , DATEPART(mm, tTransdatum) , tSignature) a Left Join (select DATEPART(YY, tTransdatum) AS Year, DATEPART(mm, tTransdatum) AS Month, tSignature ,SUM(tAntal) AS SumPart from #pytrans where tSignature = '30JK' Group by DATEPART(YY, tTransdatum) , DATEPART(mm, tTransdatum) , tSignature) b on a.Month=b.Month and a.Year =b.Year and a.tSignature = b.tSignature