У меня есть этот длинный запрос SQL UNION.Итак, у меня есть две таблицы с одинаковыми именами столбцов, но потенциально разными данными.Я пишу этот запрос, чтобы проверить различия в столбцах обеих таблиц и показать разницу.Моя проблема в том, что различия возвращаются под неправильными столбцами.Все результаты возвращаются под заголовками столбцов в первом операторе SELECT.Я хочу, чтобы разные столбцы возвращались под правильными именами столбцов, чтобы было ясно, где они.Вот мой код и картина предполагаемого результата.Я поместил комментарии, рядом с которыми операторы SELECT возвращают различия.
SELECT DISTINCT --All Differences are coming under these headings
s.EEid,
CAST(s.Gross AS FLOAT) AS 'Star Gross',
CAST(pr.Gross AS FLOAT) AS 'PR Gross',
CAST(s.Gross AS FLOAT) - CAST(pr.Gross AS FLOAT) AS 'Gross Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Gross AS FLOAT) != CAST(pr.Gross AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.NetPay AS FLOAT) AS 'Star NetPay',
CAST(pr.NetPay AS FLOAT) AS 'PR NetPay',
CAST(s.NetPay AS FLOAT) - CAST(pr.NetPay AS FLOAT) AS 'NetPay Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.NetPay AS FLOAT) != CAST(pr.NetPay AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.StudentLoanDeductions AS FLOAT) AS 'Star StudentLoanDeductions',
CAST(pr.StudentLoanDeductions AS FLOAT) AS 'PR StudentLoanDeductions',
CAST(s.StudentLoanDeductions AS FLOAT) - CAST(pr.StudentLoanDeductions AS FLOAT) AS 'StudentLoanDeductions Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.StudentLoanDeductions AS FLOAT) != CAST(pr.StudentLoanDeductions AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT --Different
s.EEid,
CAST(s.Total AS FLOAT) AS 'Star Total',
CAST(pr.Total AS FLOAT) AS 'PR Total',
CAST(s.Total AS FLOAT) - CAST(pr.Total AS FLOAT) AS 'Total Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Total AS FLOAT) != CAST(pr.Total AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT --Different
s.EEid,
CAST(s.Earnings_To_LEL AS FLOAT) AS 'Star EarningsToLEL',
CAST(pr.Earnings_To_LEL AS FLOAT) AS 'PR EarningsToLEL',
CAST(s.Earnings_To_LEL AS FLOAT) - CAST(pr.Earnings_To_LEL AS FLOAT) AS 'EarningsToLEL Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Earnings_To_LEL AS FLOAT) != CAST(pr.Earnings_To_LEL AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.Earnings_To_SET AS FLOAT) AS 'Star EarningsToSET',
CAST(pr.Earnings_To_SET AS FLOAT) AS 'PR EarningsToSET',
CAST(s.Earnings_To_SET AS FLOAT) - CAST(pr.Earnings_To_SET AS FLOAT) AS 'EarningsToSET Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Earnings_To_SET AS FLOAT) != CAST(pr.Earnings_To_SET AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT --Different
s.EEid,
CAST(s.Earnings_To_PET AS FLOAT) AS 'Star EarningsToPET',
CAST(pr.Earnings_To_PET AS FLOAT) AS 'PR EarningsToPET',
CAST(s.Earnings_To_PET AS FLOAT) - CAST(pr.Earnings_To_PET AS FLOAT) AS 'EarningsToPET Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Earnings_To_PET AS FLOAT) != CAST(pr.Earnings_To_PET AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT --Different
s.EEid,
CAST(s.Earnings_To_UST AS FLOAT) AS 'Star EarningsToUST',
CAST(pr.Earnings_To_UST AS FLOAT) AS 'PR EarningsToUST',
CAST(s.Earnings_To_UST AS FLOAT) - CAST(pr.Earnings_To_UST AS FLOAT) AS 'EarningsToUST Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Earnings_To_UST AS FLOAT) != CAST(pr.Earnings_To_UST AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.Earnings_To_AUST AS FLOAT) AS 'Star EarningsToAUST',
CAST(pr.Earnings_To_AUST AS FLOAT) AS 'PR EarningsToAUST',
CAST(s.Earnings_To_AUST AS FLOAT) - CAST(pr.Earnings_To_AUST AS FLOAT) AS 'EarningsToAUST Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Earnings_To_AUST AS FLOAT) != CAST(pr.Earnings_To_AUST AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.Earnings_To_UEL AS FLOAT) AS 'Star EarningsToUEL',
CAST(pr.Earnings_To_UEL AS FLOAT) AS 'PR EarningsToUEL',
CAST(s.Earnings_To_UEL AS FLOAT) - CAST(pr.Earnings_To_UEL AS FLOAT) AS 'EarningsToUEL Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Earnings_To_UEL AS FLOAT) != CAST(pr.Earnings_To_UEL AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.Earnings_Above_UEL AS FLOAT) AS 'Star EarningsAboveUEL',
CAST(pr.Earnings_Above_UEL AS FLOAT) AS 'PR EarningsAboveUEL',
CAST(s.Earnings_Above_UEL AS FLOAT) - CAST(pr.Earnings_Above_UEL AS FLOAT) AS 'EarningsAboveUEL Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Earnings_Above_UEL AS FLOAT) != CAST(pr.Earnings_Above_UEL AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT --Different
s.EEid,
CAST(s.Ee_Contributions_Pt1 AS FLOAT) AS 'Star EeContributionsPT1',
CAST(pr.Ee_Contributions_Pt1 AS FLOAT) AS 'PR EeContributionsPT1',
CAST(s.Ee_Contributions_Pt1 AS FLOAT) - CAST(pr.Ee_Contributions_Pt1 AS FLOAT) AS 'EeContributionsPT1 Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Ee_Contributions_Pt1 AS FLOAT) != CAST(pr.Ee_Contributions_Pt1 AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.Ee_Contributions_Pt2 AS FLOAT) AS 'Star EeContributionsPT2',
CAST(pr.Ee_Contributions_Pt2 AS FLOAT) AS 'PR EeContributionsPT2',
CAST(s.Ee_Contributions_Pt2 AS FLOAT) - CAST(pr.Ee_Contributions_Pt2 AS FLOAT) AS 'EeContributionsPT2 Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Ee_Contributions_Pt2 AS FLOAT) != CAST(pr.Ee_Contributions_Pt2 AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT --Different
s.EEid,
CAST(s.Er_Contributions AS FLOAT) AS 'Star ErContributions',
CAST(pr.Er_Contributions AS FLOAT) AS 'PR ErContributions',
CAST(s.Er_Contributions AS FLOAT) - CAST(pr.Er_Contributions AS FLOAT) AS 'ErContributions Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Er_Contributions AS FLOAT) != CAST(pr.Er_Contributions AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.Ee_Rebate AS FLOAT) AS 'Star EeRebate',
CAST(pr.Ee_Rebate AS FLOAT) AS 'PR EeRebate',
CAST(s.Ee_Rebate AS FLOAT) - CAST(pr.Ee_Rebate AS FLOAT) AS 'EeRebate Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Ee_Rebate AS FLOAT) != CAST(pr.Ee_Rebate AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.Er_Rebate AS FLOAT) AS 'Star ErRebate',
CAST(pr.Er_Rebate AS FLOAT) AS 'PR ErRebate',
CAST(s.Er_Rebate AS FLOAT) - CAST(pr.Er_Rebate AS FLOAT) AS 'ErRebate Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Er_Rebate AS FLOAT) != CAST(pr.Er_Rebate AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.Ee_Reduction AS FLOAT) AS 'Star EeReduction',
CAST(pr.Ee_Reduction AS FLOAT) AS 'PR EeReduction',
CAST(s.Ee_Reduction AS FLOAT) - CAST(pr.Ee_Reduction AS FLOAT) AS 'EeReduction Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.Ee_Reduction AS FLOAT) != CAST(pr.Ee_Reduction AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.TaxPreviousEmt AS FLOAT) AS 'Star TaxPreviousEmt',
CAST(pr.TaxPreviousEmt AS FLOAT) AS 'PR TaxPreviousEmt',
CAST(s.TaxPreviousEmt AS FLOAT) - CAST(pr.TaxPreviousEmt AS FLOAT) AS 'TaxPreviousEmt Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.TaxPreviousEmt AS FLOAT) != CAST(pr.TaxPreviousEmt AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.TaxablePayPreviousEmt AS FLOAT) AS 'Star TaxablePayPreviousEmt',
CAST(pr.TaxablePayPreviousEmt AS FLOAT) AS 'PR TaxablePayPreviousEmt',
CAST(s.TaxablePayPreviousEmt AS FLOAT) - CAST(pr.TaxablePayPreviousEmt AS FLOAT) AS 'TaxablePayPreviousEmt Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.TaxablePayPreviousEmt AS FLOAT) != CAST(pr.TaxablePayPreviousEmt AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.TaxThisEmt AS FLOAT) AS 'Star TaxThisEmt',
CAST(pr.TaxThisEmt AS FLOAT) AS 'PR TaxThisEmt',
CAST(s.TaxThisEmt AS FLOAT) - CAST(pr.TaxThisEmt AS FLOAT) AS 'TaxThisEmt Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.TaxThisEmt AS FLOAT) != CAST(pr.TaxThisEmt AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.TaxablePayThisEmt AS FLOAT) AS 'Star TaxablePayThisEmt',
CAST(pr.TaxablePayThisEmt AS FLOAT) AS 'PR TaxablePayThisEmt',
CAST(s.TaxablePayThisEmt AS FLOAT) - CAST(pr.TaxablePayThisEmt AS FLOAT) AS 'TaxablePayThisEmt Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.TaxablePayThisEmt AS FLOAT) != CAST(pr.TaxablePayThisEmt AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.AccYearBal AS FLOAT) AS 'Star AccYearBal',
CAST(pr.AccYearBal AS FLOAT) AS 'PR AccYearBal',
CAST(s.AccYearBal AS FLOAT) - CAST(pr.AccYearBal AS FLOAT) AS 'AccYearBal Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.AccYearBal AS FLOAT) != CAST(pr.AccYearBal AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.PAYEYearBal AS FLOAT) AS 'Star PAYEYearBal',
CAST(pr.PAYEYearBal AS FLOAT) AS 'PR PAYEYearBal',
CAST(s.PAYEYearBal AS FLOAT) - CAST(pr.PAYEYearBal AS FLOAT) AS 'PAYEYearBal Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.PAYEYearBal AS FLOAT) != CAST(pr.PAYEYearBal AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.ACCYearUnits AS FLOAT) AS 'Star ACCYearUnits',
CAST(pr.ACCYearUnits AS FLOAT) AS 'PR ACCYearUnits',
CAST(s.ACCYearUnits AS FLOAT) - CAST(pr.ACCYearUnits AS FLOAT) AS 'ACCYearUnits Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.ACCYearUnits AS FLOAT) != CAST(pr.ACCYearUnits AS FLOAT) AND s.PayCode = pr.PayCode
UNION
SELECT DISTINCT
s.EEid,
CAST(s.PAYEYearUnits AS FLOAT) AS 'Star PAYEYearUnits',
CAST(pr.PAYEYearUnits AS FLOAT) AS 'PR PAYEYearUnits',
CAST(s.PAYEYearUnits AS FLOAT) - CAST(pr.PAYEYearUnits AS FLOAT) AS 'PAYEYearUnits Difference'
FROM starPayHistory s
INNER JOIN payRunPayHistory pr ON pr.EEid = s.EEid
WHERE CAST(s.PAYEYearUnits AS FLOAT) != CAST(pr.PAYEYearUnits AS FLOAT) AND s.PayCode = pr.PayCode
Вот изображение результатов.Как вы можете видеть, все результаты идут под неправильным названием заголовка. Любые рекомендации с благодарностью принимаются
ТАК вот пример ожидаемого результата.Столбцы с двумя разными значениями, а затем с разницей.