sql - Custom Result Order using UNION - TSQL -
i have simple task in need select rows particular field value of 1 first, value of 2 , other rows value of 0.
i using join items member of category. thought performing 3 selects , using union combine results in correct order, wrong :)
my sql follows:
select * tblcompanycategory inner join tblcompany on tblcompany.idcompany = tblcompanycategory.idcompany tblcompanycategory.idcategory = @category , tblcompany.intpremium = 1 union select * tblcompanycategory inner join tblcompany on tblcompany.idcompany = tblcompanycategory.idcompany tblcompanycategory.idcategory = @category , tblcompany.intpremium = 2 union select * tblcompanycategory inner join tblcompany on tblcompany.idcompany = tblcompanycategory.idcompany tblcompanycategory.idcategory = @category , tblcompany.intpremium = 0
my results not come out ordered 1, 2 , 0.. doing wrong here??
* solution * guys. below final sql using.
select * tblcompanycategory inner join tblcompany on tblcompany.idcompany = tblcompanycategory.idcompany tblcompanycategory.idcategory = @category order case tblcompany.intpremium when 1 0 when 2 1 when 0 2 end
the union statement, set operators, agnostic when comes ordering data.
what can do, however, run 1 select statement carefully-crafted order statement, such as:
... order case tblcompany.intpremium when 1 0 when 2 1 when 0 2 end
Comments
Post a Comment