Вот как вы должны решить эту проблему:
1. Создайте промежуточную таблицу в вашей БД следующим образом. Имейте в виду, что вам нужно иметь столбец Identity при вставке:
CREATE TABLE tbl_Excel_stg (
ID INT IDENTITY(1,1),
[Date] VARCHAR(50),
code VARCHAR(50),
Employee VARCHAR(50),
[type] VARCHAR(50),
total VARCHAR(50),
actual VARCHAR(50)
)
2.Создайте пакет служб SSIS для загрузки данных Excel в промежуточную таблицу.
3. Выполните следующий запрос для извлечения исправленных данных (я включил некоторые данные для целей тестирования)
INSERT INTO tbl_Excel_stg ([Date],code,Employee,type,total,actual)
VALUES ('2018-12-12','Itsdysa','3026262','general','150','139');
GO
INSERT INTO tbl_Excel_stg ([Date],code,Employee,type,total,actual)
VALUES ('','','','typica','200','177');
GO
INSERT INTO tbl_Excel_stg ([Date],code,Employee,type,total,actual)
VALUES ('','','','dummy','120','100');
GO
INSERT INTO tbl_Excel_stg ([Date],code,Employee,type,total,actual)
VALUES ('2018-12-14','hskdbegs','3630878','new','300','143');
GO
INSERT INTO tbl_Excel_stg ([Date],code,Employee,type,total,actual)
VALUES ('','','','typical','100','99');
GO
INSERT INTO tbl_Excel_stg ([Date],code,Employee,type,total,actual)
VALUES ('','','4829264','dummy','210','187');
GO
INSERT INTO tbl_Excel_stg ([Date],code,Employee,type,total,actual)
VALUES ('','','','general','130','89');
GO
SELECT [Date] = CASE s0.[Date] WHEN '' THEN s1.[Date] ELSE s0.[Date] END
, code = CASE s0.code WHEN '' THEN s1.code ELSE s0.code END
, Employee = CASE s0.Employee WHEN '' THEN s1.Employee ELSE s0.Employee END
, s0.type, s0.total, s0.actual
FROM tbl_Excel_stg as s0
OUTER APPLY (
SELECT ID = MAX(si.ID) FROM tbl_Excel_stg as si
WHERE si.ID < s0.ID and si.[Date] != ''
) as sDate
OUTER APPLY (
SELECT ID = MAX(si.ID) FROM tbl_Excel_stg as si
WHERE si.ID < s0.ID and si.code != ''
) as scode
OUTER APPLY (
SELECT ID = MAX(si.ID) FROM tbl_Excel_stg as si
WHERE si.ID < s0.ID and si.Employee != ''
) as sEmployee
LEFT JOIN tbl_Excel_stg as s1 ON s1.ID = sDate.ID
LEFT JOIN tbl_Excel_stg as s2 ON s2.ID = scode.ID
LEFT JOIN tbl_Excel_stg as s3 ON s3.ID = sEmployee.ID
ORDER BY s0.ID
Решение может быть не очень красивым, но простым для понимания / изменения / отладки