sqlserver 怎么让字段b的值根据字段a的值依次递增
sqlserver 如何让字段b的值根据字段a的值依次递增
在数据表中有两个字段:no,childno,字段值如下:
a b
20150201
20150201
20150201
20150202
20150202
20150202
20150202
20150203
20150203
如何实现让字段b的值如下:
a b
20150201 2015020101
20150201 2015020102
20150201 2015020103
20150202 2015020201
20150202 2015020202
20150202 2015020203
20150202 2015020204
20150203 2015020301
20150203 2015020302
------解决思路----------------------
;with cet AS (
select '20150201' AS ID UNION ALL
select '20150201' UNION ALL
select '20150201' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150203' UNION ALL
SELECT '20150203'
)
SELECT
ID,
SUBSTRING(ID,1,7)+ROW_NUMBER()OVER(PARTITION BY ID ORDER BY ID)
FROM cet
------解决思路----------------------
------解决思路----------------------
在数据表中有两个字段:no,childno,字段值如下:
a b
20150201
20150201
20150201
20150202
20150202
20150202
20150202
20150203
20150203
如何实现让字段b的值如下:
a b
20150201 2015020101
20150201 2015020102
20150201 2015020103
20150202 2015020201
20150202 2015020202
20150202 2015020203
20150202 2015020204
20150203 2015020301
20150203 2015020302
------解决思路----------------------
;with cet AS (
select '20150201' AS ID UNION ALL
select '20150201' UNION ALL
select '20150201' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150203' UNION ALL
SELECT '20150203'
)
SELECT
ID,
SUBSTRING(ID,1,7)+ROW_NUMBER()OVER(PARTITION BY ID ORDER BY ID)
FROM cet
------解决思路----------------------
with cet AS (
select '20150201' AS ID UNION ALL
select '20150201' UNION ALL
select '20150201' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150203' UNION ALL
SELECT '20150203'
)
SELECT
ID,SUBSTRING(ID,1,8)+RIGHT(REPLICATE('0',2)+CAST(ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS varchar(10)),2)
FROM cet
------解决思路----------------------
-- 借楼上的语句,纯属凑个热闹,如果ID 都是数字的话,可以这样写。
with cet AS (
select '20150201' AS ID UNION ALL
select '20150201' UNION ALL
select '20150201' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150202' UNION ALL
select '20150203' UNION ALL
SELECT '20150203'
)
SELECT
--ID,SUBSTRING(ID,1,8)+RIGHT(REPLICATE('0',2)+CAST(ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS varchar(10)),2)
ID ,
ID * 100 + ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID)
FROM cet