Преобразовать строку в уникальный идентификатор, когда происходит соединение - PullRequest
1 голос
/ 04 июля 2019

Я хочу создать процедуру хранения, но сталкиваюсь с этой ошибкой, через некоторое время обнаружив, что ret_payrollcalculationInfo включает в себя столбец xml и хранит BankGuid и BankBranchGuid в виде строки, а не uniqueidentifier и не может присоединиться к их таблицам.

<BankGuid>92434DE6-3D3C-43F1-A89E-869AE5456B07</BankGuid>
<BankBranchGuid>00000000-0000-0000-0000-000000000000</BankBranchGuid>
<PayrollItemGuid>482C44DD-ECFB-4B79-9118-86B681CC51C9</PayrollItemGuid>
<SalariedType>1</SalariedType>

Я хочу знать, есть ли способ разыграть уникальный идентификатор, когда происходит INNER JOIN.вот код ...

CREATE PROCEDURE [dbo].[ret_PayrollCalculations_GetCalculationSummaries]
(
    @CalculationCommandGuid uniqueidentifier,
    @OperationalUnitIDs varchar(512)
)
AS
DECLARE @UnitIds TABLE([ID] INT primary key)
IF ISNULL(@OperationalUnitIDs, '') <> ''
    INSERT INTO @UnitIds SELECT Distinct [Column] FROM com_udfSplit(@OperationalUnitIDs, ',')

SELECT DISTINCT
    calculaion.[PersonnelNo],
    calculaion.[FullName],
    calculaion.[Amount],
    calcInfo.[AccountNo],
    calcInfo.[SalariedType],
    bank.[Title],
    branch.[Title]
FROM
    ret_PayrollCalculationCommands command INNER JOIN
    ret_vwPayrollCalculations calculaion ON command.[Guid] = calculaion.[CalculationCommandGuid] INNER JOIN
    ret_PayrollCalculationInfo calcInfo ON calculaion.[Guid] = calcInfo.[PayrollCalculationGuid] INNER JOIN
    gen_Banks bank ON calcInfo.[BankGuid]   = bank.[Guid] INNER JOIN
    gen_Branches branch ON calcInfo.[BankBranchGuid] = branch.[Title]
WHERE
command.[Guid] = @CalculationCommandGuid

1 Ответ

1 голос
/ 04 июля 2019

Вы можете просто привести значение VARCHAR к UNIQUEIDENTIFIER, например:

CAST('482C44DD-ECFB-4B79-9118-86B681CC51C9' AS UNIQUEIDENTIFIER)

Так что ваши JOIN предложения станут примерно такими:

ON command.[Guid] = CAST(calculaion.[CalculationCommandGuid] AS UNIQUEIDENTIFIER)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...