Voici mon code:
With table_CTE(a.PolicyNumber, Amount,
b.PolicyNumber, FundValue)
as
(
Select a.PolicyNumber, Amount,
b.PolicyNumber, FundValue
from ( Select PolicyNumber, Amount,
from table.a
) as a
Full Outer Join
(Select PolicyNumber, FundValue
from table.b
) as b
on
a.PolicyNumber = b.PolicyNumber
)
3 Réponses :
Les noms de colonne ne supportent pas les périodes. Peut-être avez-vous l'intention de: qui dit, vous n'avez pas à répéter les alias de colonne dans la définition CTE. Ils sont tous attribués dans le SELECT CODE>, vous pouvez utiliser Utiliser: P> with table_CTE as (
select . . .
Essayez ci-dessous
With table_CTE as (Select INDCONEX.PolicyNumber, INDCONEX.InvestmentCode,
IndexType, Amount, INDCONEX.FundID,
INTCRDEX.PolicyNumber, FundValue, DepositDate, INTCRDEX.FundID, [Difference])
(
Select INDCONEX.PolicyNumber, INDCONEX.InvestmentCode,IndexType, Amount,
INDCONEX.FundID,
INTCRDEX.PolicyNumber, FundValue, DepositDate, INTCRDEX.FundID,
abs (INDCONEX.Amount-INTCRDEX.FundValue) as [Difference]
from ( Select PolicyNumber, InvestmentCode, IndexType,Amount, FundID
from FinancialExtracts.dbo.INDCONEX
where RunDate = '20200531' and InvestmentCode >3) as INDCONEX
Full Outer Join
(Select PolicyNumber, FundValue, DepositDate, FundID
from FinancialExtracts.dbo.INTCRDEX
where RunDate = '20200531' and InvestmentCode > 3) as INTCRDEX
on
INDCONEX.PolicyNumber = INTCRDEX.PolicyNumber and
INDCONEX.FundID = INTCRDEX.FundID
Je viens d'apprendre SQL alors merci de votre réponse. Lorsque j'exécute ce code, je reçois des erreurs disant "l'identifiant multi-pièces" IndConex.PolicyNumé "n'a pas pu être lié" pour la plupart des objets. Savez-vous ce que signifie cette erreur?
Oui ! Vous avez écrit le numéro de stratégie écrit deux fois, écrivez-le une fois et n'utilisez pas de colonnes alias dans la définition CTE.
La requête ci-dessus tire des colonnes de deux tables différentes (INDCONEX et INTCRDEX) et la combinant en fonction de la norme PolicyNumber (car les deux tableaux ont les mêmes numéros de politique). Lorsque je n'écris que des règles de stratégie une fois que je reçois une erreur disant "TABLE_CTE a plus de colonnes que spécifiées dans la liste de colonnes" Comment puis-je faire la liste des colonnes répertoriées dans les deux tableaux (numéro de stratégieNumber, fonduidé)?
Dans une déclaration de sélection, vous écrivez une fois? Sélectionnez IndConex.PolicyNumber, IndConex.InvestmentCode, IndexType, Montant, IndConex.Fundid, Intcrdex.PolicyNumber, Fundvalue, Intcrdex.Fundid, ABS (IndConex.Amount-Intcrdex.Fundvalue) Comme [différence]
Vous ne devez pas qualifier les noms de colonne dans l'en-tête CTE avec des alias des noms de table utilisés à l'intérieur du CTE. remplacer
Aussi table.a code> et table.b code> ne sont pas des noms de table valides (car ils contiennent le . Code>). Code>).
Si ce sont les noms réels, vous devez les enfermer entre crochets: [table.a] code> et [table.b] code>.
Mais je crois que vous voulez juste utiliser des alias pour eux et ce n'est pas la bonne façon de le faire.
Vous compliquez trop la CTE.
C'est aussi simple que ceci: tabla code> et tableb code> avec les noms de table réels.
Les colonnes a.policynumber code> et b.policyNumber code> colonne de retour avec le même nom et ceci n'est pas autorisé, c'est pourquoi je les ai alias sur StratégieNumbera CODE> et stratégieNumberb code>. p> p>
Aussi, après le
avec .... Comme (....) code> Il doit y avoir une instruction SQL qui utilise / références que cte ....