sql - Possible to eliminate this sub query? -


i have documents table fields as

documentid int - pk , autoincrement  laststatuschangeddatetime - datetime  jurisdictionid - int  documentstatusid - int 

now want bring in computed column named canchangestatus. queue. if document first in it's status can changed. query:

select d.documentid,   (     select cast(case when d.documentid = v.documentid 1 else 0 end bit)         (         select top 1 documentid         documents         jurisdictionid = d.jurisdictionid             ,         documentstatusid = d.documentstatusid         order laststatuschangeddatetime      ) v ) canchangestatus     documents d 

index there on jurisdictionid , documentstatusid. culprit subquery - way trying calculate canchangestatus. there way can speed or convert subquery join because joins mostly faster subqueries?

you should able aggregate function (example on sqlfiddle):

select documentid,        case when row_number() on ( partition jurisdictionid, documentstatusid                                      order laststatuschangeddatetime )          = 1 1 else 0 end bit  documents 

Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -