SQL - 规范化从 Select 语句/存储过程返回的数据
SQL - Normalizing Data returned from Select Statement / Stored Procedure
我正在构建一个神经网络来做一些 back-propagation/data 分析。
我正在为训练目的对我的输入数据进行标准化。
我的一个数据集包含一个类型标识符,目前有8种类型(这可能随时更改)。
在我的select语句中,我想有一个条件,如果TypeId = 1,我实际上想要return 00000001。如果TypeId = 2,我想return 00000011,然后重复。数字的长度将代表类型的数量。个的数量代表 TypeId。
关于如何处理这个问题有什么建议吗?我更喜欢比我提供的更动态的东西,因为类型的数量可能会改变。
SELECT TypeId =
CASE TypeId
WHEN 1 THEN 00000001
WHEN 2 THEN 00000011
WHEN 3 THEN 00000111
WHEN 4 THEN 00001111
END,
Name
FROM dbo.Types
DECLARE @t TABLE (TypeId INT, Name VARCHAR(100))
INSERT INTO @t VALUES (1, 'Type1'), (2, 'Type2'), (3, 'Type3'), (10, 'Type10')
SELECT REPLICATE('0', (SELECT MAX(TypeId) FROM @t) - TypeId) + REPLICATE('1', TypeId), Name
FROM @t
给出:
0000000001 Type1
0000000011 Type2
0000000111 Type3
1111111111 Type10
我正在构建一个神经网络来做一些 back-propagation/data 分析。
我正在为训练目的对我的输入数据进行标准化。
我的一个数据集包含一个类型标识符,目前有8种类型(这可能随时更改)。
在我的select语句中,我想有一个条件,如果TypeId = 1,我实际上想要return 00000001。如果TypeId = 2,我想return 00000011,然后重复。数字的长度将代表类型的数量。个的数量代表 TypeId。
关于如何处理这个问题有什么建议吗?我更喜欢比我提供的更动态的东西,因为类型的数量可能会改变。
SELECT TypeId =
CASE TypeId
WHEN 1 THEN 00000001
WHEN 2 THEN 00000011
WHEN 3 THEN 00000111
WHEN 4 THEN 00001111
END,
Name
FROM dbo.Types
DECLARE @t TABLE (TypeId INT, Name VARCHAR(100))
INSERT INTO @t VALUES (1, 'Type1'), (2, 'Type2'), (3, 'Type3'), (10, 'Type10')
SELECT REPLICATE('0', (SELECT MAX(TypeId) FROM @t) - TypeId) + REPLICATE('1', TypeId), Name
FROM @t
给出:
0000000001 Type1
0000000011 Type2
0000000111 Type3
1111111111 Type10