i'm wondering if there function in sql server can this:
select itemid, itemtitle, isfirstrow(itemid) isfirst, islastrow(itemid) islast mytable order itemid
example desired results:
itemid itemtitle isfirst islast ------ ------------ ------- ------ 1 item true false 2 world false false 3 code false false 4 false true
the thing want first , last row values representative of specific ordering of table, not order in results returned. in case, itemid value key.
select itemid, itemtitle, isfirstrow(itemid ascending) isfirst, islastrow(itemid ascending) islast mytable order itemtitle itemid itemtitle isfirst islast ------ ------------ ------- ------ 1 item true false 3 code false false 4 false true 2 world false false
or example:
select itemid, itemtitle, isfirstrow(itemtitle descending) isfirst, islastrow(itemtitle descending) islast mytable itemid > 1 order itemid itemid itemtitle isfirst islast ------ ------------ ------- ----------- 2 world true false 3 code false false 4 false false
the use case returning result set, or single record result set, front end application, allowing front application know whether it's first or last record in specific ordering without having make separate query , "count of records" or "max/min" strategy (which wouldn't work on text field).
i'm imagining subquery might able not sure how syntax look.
you can using case
, row_number
create table #temp ( itemid int, itemtitle varchar(10), ) insert #temp values (1, 'an item') insert #temp values (3, 'code') insert #temp values (4, 'something') insert #temp values (2, 'the world') select itemid, itemtitle, case when row_number() on (order itemid asc) = 1 'true' else 'false' end isfirst, case when row_number() on (order itemid desc) = 1 'true' else 'false' end islast #temp order itemtitle
Comments
Post a Comment