Вам нужен сложный unpivot
. Один из способов сделать это - использовать таблицу подсчета для создания нескольких строк, а также использовать cross apply
:
;WITH Tally (n) AS
(
-- 1000 rows
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) a(n)
CROSS JOIN (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) b(n)
CROSS JOIN (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0)) c(n)
)
SELECT t.id,t.market,q.*
FROM [Table1] t
outer apply
(
select t.adultage,'Adult' where adult>=1
union all
select adultage-2,'Adult' where adult=2
union all
select 2.5,'Child' from Tally where n<=[0-5]
union all
select 9,'Child' from Tally where n<=[6-12]
union all
select 15,'Child' from Tally where n<=[13-17]
)q(Age,Category)