I don’t think the standard Slurm commands will give you much beyond the REASON code.
And I believe that the REASON code is from the last time the job was examined in the normal scheduler run (I don’t think it gets updated by the backfill process). Depending where the job is in the queue, there may be a field SchedNodeList which will show you what nodes Slurm is thinking about using for this job (I believe this is available if REASON=Resources). And note that the StartTime field may have the estimated start time for the job. That’s about all I ever found really usable for jobs with REASON=Resources.
REASON=Priority and the various held states are pretty self explanatory. Stuff like QOSResourceLimit, and AssocGrpCPUMinsLimit might take a little work to figure out what limit is being hit, but usually not to bad to do so.
Other reasons, like “launch_failed_requeued” typically indicate something abnormal in the system, and the sysadmin should examine logs on the node the job ran on to see what is up.