を使用して、私は次のような結果を返す次のクエリSQL Serverの - 動的ピボット既存のテーブル
SELECT CONCAT(RIGHT('00' + CONVERT(VARCHAR(2),Procedures.SeriesNum),2),'-',RIGHT('0000' + CONVERT(VARCHAR(4),Procedures.ProcNum),4)) AS 'Procedure',
Procedures.Description,
Procedures.CurrentRev,
Procedures.DayToDayLevel,
Procedures.MaxLevel,
Users.Username,
UsersProcedures.RevTrained,
UsersProcedures.LevelTrained
FROM Procedures
CROSS JOIN Users
LEFT JOIN UsersProcedures ON UsersProcedures.Username = Users.Username AND Procedures.SeriesNum = UsersProcedures.SeriesNum AND Procedures.ProcNum = UsersProcedures.ProcNum
持っている:私は、各ユーザーのための情報となるようピボットを使用したいしかし を(具体的に彼らが訓練されたレベルは列の値として表示されます(列のタイトルはユーザー名のものです)。
私はCurrentRevを無視したいのではなく、各プロシージャの各リビジョンに対して1行現在のリビジョンに訓練されたユーザーはいません。 SERSのような以下、)空行として存在する必要があることを、任意の以前のリビジョンその手続き上、またはしないように訓練されている:
私は私が決してきませんが、私は、ピボットを使用する必要があると推定しますこれまでに試したことがあります。さらに、Webで見た例は、ピボット列の静的リストを使用するようですが、Usersテーブルのすべてのレコードを使用したいと考えています。
データグリッドに結果を表示する場合は、わかりやすいように色付けされています。
これを試してみるとどうなりますか?
UPDATE:私は限り、このクエリとして持って
SELECT *
FROM (SELECT CONCAT(RIGHT('00' + CONVERT(VARCHAR(2),Procedures.SeriesNum),2),'-',RIGHT('0000' + CONVERT(VARCHAR(4),Procedures.ProcNum),4)) AS 'Procedure',
Procedures.Description,
Procedures.CurrentRev,
UsersProcedures.RevTrained,
Users.Username,
UsersProcedures.LevelTrained FROM Procedures CROSS JOIN Users LEFT JOIN UsersProcedures ON UsersProcedures.Username = Users.Username AND Procedures.SeriesNum = UsersProcedures.SeriesNum AND Procedures.ProcNum = UsersProcedures.ProcNum) AS Procs
PIVOT
(
MAX(LevelTrained)
FOR Procs.Username
IN(User1,User2,User3)
) AS PivotTable
私にこの与える:
私にさらに同様のしかし、私は思います、まだグループに同様の結果を2番目のスクリーンショット。すなわち、少なくとも1人のユーザが既に特定のリビジョンについて訓練されている場合、そのリビジョンに対して別の空の行も表示しない。
また、RevTrainedがNULLの場合、その場所にCurrentRevを表示します。
はい、動的ピボットが必要です。それはいくつかの作業が必要です。いくつかの洞察力については、[この質問](http://stackoverflow.com/questions/38270987/sql-server-2012-dynamic-pivot-concatenation-for-cross-tab/38271962#38271962)をご覧ください。私は少しでもあなたを助けるためにもう少し時間を見つけようとします。 – PacoDePaco
ピボットデータの集計にはすべての例が含まれていますが、実際にはそうしたくないと付け加えておきます。これは、ユーザーごとに表示する単一の値(そのプロシージャのトレーニングレベルとそのリビジョン)です。 –