各月とユーザーのパーセンテージ値を提供する select ステートメントを作成しようとしています。
次のような行を持つテーブルがあります。テーブル名: 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
選択すると、署名ごとに tArtCode DKB または DKK に費やされた時間の割合と、すべての tArtCode に費やされたすべての時間の割合が表示されます。したがって、上記の例から、select は 8 か月目の署名 30JK に対して 40%、9 か月目の署名 30JK に対して 100% を与えるはずです。
さまざまな種類の sql select ステートメントを試しましたが、100% 正しいとは思えません。これは私が持っているものです。
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
この SQL は機能しません。エラーは、Year、Month、SumTot をグループ化できないことです。また、エラーが発生します。サブクエリが EXISTS で導入されていない場合、選択リストに指定できる式は 1 つだけです。
この次のSQL選択は、私が欲しいものを私に与えてくれますが、私が求めているものを具体的にする必要があります...いわば。この sql を使用する場合、すべての署名と毎月の sql クエリが必要になりますが、これはあまり創造的ではありません。
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
Union も試してみましたが、うまくいかないようです。
これについて本当に助けが必要です!ありがとう!