ワークフロー内の特定のドキュメントを承認するために複数の査読者のうちの1人が取った最も長い日数(および校閲者のバッジ番号)を見つけようとしています。たとえば、バッジ番号と承認された日付とともに、いくつかのワークフロー承認手順(サブミッター、マネージャー、コントローラー、QA)を保持するテーブルがあります。テーブルは「ワークフロー」と呼ばれ、上記の4つのワークフローステップがテーブルのレコードとして、ワークフローと1対多の関係を持つメインテーブルデザインがあります。SQL Server計算に基づいて複数の行から1つを選択します
私は、最も長いレビューステップ(日数)の日数と、そのステップのレビューアのバッジ番号(基本的に承認ワークフローを保持している)を決定しようとしています。後で使用する独立変数を設定しようとしていましたが、バッジ番号を設定する方法がわからず、混乱しています。私はCASE、IIF、およびCOALESCEを試しましたが、最初の真の値を返すことを望んでいないので、何の幸運も持たず、その後停止します。すべてのステップを評価し続けます。ここに私のSQLの例である:
declare @managerTime int = 0
declare @controllerTime int = 0
declare @qaTime int = 0
SET @managerTime = (SELECT DATEDIFF(day, manager.BadgeDate, submitter.BadgeDate)
from Design d
left outer join Workflow submitter on (d.DCRId = submitter.DCRId and submitter.RoleName = 'Submitter')
left outer join Workflow manager on (d.DCRId = manager.DCRId and manager.RoleName = 'System Manager')
SET @controllerTime = (SELECT DATEDIFF(day, controller.BadgeDate, manager.BadgeDate)
from Design d
left outer join Workflow manager on (d.DCRId = manager.DCRId and manager.RoleName = 'System Manager')
left outer join Workflow controller on (d.DCRId = controller.DCRId and controller.RoleName = 'DCR Controller')
いくつかのテストデータをddlに提供できますか? – scsimon