, ( ), , . , , . , , .
:
create table WeekData
(
WeekStr VARCHAR(16) NOT NULL,
Amount INT,
YearVal AS CAST (Right(WeekStr,4) AS SMALLINT) PERSISTED,
MonthVal AS cast(substring(WeekStr,charIndex('m', WeekStr)-2,2) as SMALLINT),
WeekVal AS CAST(left(WeekStr,1) AS TINYINT)
)
insert into WeekData (WeekStr, Amount)
VALUES ('1w - 1m - 2015', 1000),
('4w - 8m - 2015', 1000),
('2w - 2m - 2015', 1000),
('4w - 6m - 2015', 1000),
('3w - 3m - 2015', 1000),
('3w - 10m - 2015', 1000),
('1w - 10m - 2015', 1000),
('3w - 12m - 2015', 1000),
('1w - 6m - 2016', 1000),
('2w - 6m - 2016', 1000),
('3w - 6m - 2016', 1000),
('4w - 6m - 2016', 1000),
('3w - 8m - 2016', 1000),
('2w - 9m - 2016', 1000)
GO
select WeekStr, Amount
from WeekData
order by YearVal, MonthVal, WeekVal