Перечислите столбец явным образом при выполнении INSERT
. Тогда убедитесь, что столбцы выстроились в линию! SQL использует позиции столбцов в INSERT
, а не их имена. (Это может быть нелогичным, потому что SQL обычно использует имена, а не позиции для идентификации столбцов.)
Ваши не выстраиваются в очередь:
INSERT into Param_Data (LoanAmount, [Purpose of Loan], PropertyUsage, MonthlyIncome,
MaritalStatus, Race, Ethnicity, Sex,
LoanDate, DOB
)
SELECT ff.LoanAmount, ff.MonthlyIncome,
p.[Property Usage], d.Race, d.Ethnicity, d.Sex, d.MaritalStatus, d.DOB,
l.LoanDate, l.[Purpose of Loan]
FROM dbo.Fact_Financials ff LEFT JOIN
dbo.Dim_Loan l
ON ff.Loan_ID = l.Loan_ID LEFT JOIN
Dim_Property p
ON ff.Property_ID = p.Property_ID LEFT JOIN
dbo.Dim_Borrower b
ON ff.Borrower_ID = b.Borrower_ID;
Вам нужно переставить столбцы - я предпочитаю переставлять их в SELECT
, а не INSERT
:
INSERT into Param_Data (LoanAmount, [Purpose of Loan], PropertyUsage, MonthlyIncome,
MaritalStatus, Race, Ethnicity, Sex,
LoanDate, DOB
)
SELECT ff.LoanAmount, l.[Purpose of Loan], p.[Property Usage], ff.MonthlyIncome,
d.MaritalStatus, d.Race, d.Ethnicity, d.Sex,
l.LoanDate, d.DOB
FROM dbo.Fact_Financials ff LEFT JOIN
dbo.Dim_Loan l
ON ff.Loan_ID = l.Loan_ID LEFT JOIN
Dim_Property p
ON ff.Property_ID = p.Property_ID LEFT JOIN
dbo.Dim_Borrower b
ON ff.Borrower_ID = b.Borrower_ID;
Обратите внимание, что я также изменил псевдонимы таблиц на значащие - сокращения для имен таблиц. Это облегчает понимание запроса.