0
我有一個包含數字和一些字符串行的列。我打算用數值的平均值替換字符串。我怎樣才能做到這一點?SSIS替換中位數的字符串
實施例:
1 4
2 6
3 NA
4 10
5 NA
6 10
7 5
行號= 5 平均= 7
結果:
1 4
2 6
3 7
4 10
5 7
6 10
7 5
我有一個包含數字和一些字符串行的列。我打算用數值的平均值替換字符串。我怎樣才能做到這一點?SSIS替換中位數的字符串
實施例:
1 4
2 6
3 NA
4 10
5 NA
6 10
7 5
行號= 5 平均= 7
結果:
1 4
2 6
3 7
4 10
5 7
6 10
7 5
使用派生列用NULL替換NA。將數據存儲在兩個字段均爲int數據類型的登臺表中。你的舞臺看起來像這樣。請確保您的數據庫中沒有名爲Med的表格!
BEGIN TRAN
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Med]') AND type in (N'U'))
DROP TABLE [dbo].[Med]
CREATE TABLE [dbo].[Med](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Val] [int] NULL
) ON [PRIMARY]
INSERT INTO [dbo].[Med] ([Val])
VALUES (4), (6), (null), (10), (null), (10), (5);
SELECT * FROM Med;
DECLARE @Average as int; ----- Choose the right data type to meet your requirement
SELECT @Average = AVG (VAL) FROM Med;
/* Replace Update with Merge to make it more efficient
Update MED
SET Val =
CASE
WHEN Val IS NULL THEN @Average
ELSE Val
END
*/
MERGE MED as TARGET
USING
(
SELECT ID FROM MED WHERE Val IS NULL
)
AS SOURCE ON SOURCE.ID = TARGET.ID
WHEN MATCHED THEN
UPDATE
SET TARGET.Val = @Average
;
SELECT * FROM Med
ROLLBACK
GO