【问题标题】:Selecting a column with two different conditions joined on two different tables选择在两个不同表上连接的具有两个不同条件的列
【发布时间】:2021-01-14 11:40:56
【问题描述】:

对于下面的代码,我需要从表#ScoreTemp 中选择列[Score Value],但我需要根据另一列[Score] 等于字符串@987654324 的条件将其选择为两个不同的列@ 代表一列,'Revbal' 代表另一列。当两个条件的值都存在于一个表中时,我不确定如何执行此操作。任何帮助,将不胜感激。谢谢!

SELECT a.CBRRequestDate AS UpdateDate
    ,b.[Score Value] AS Fico
    ,c.[Score Value] AS Revbal
    ,NULL AS TUGroup
    ,a.Vision_Practitioner_Id__c AS PID
FROM [SFOnPrem].[dbo].[Contact] a
LEFT JOIN #ScoreTemp d ON a.Id = d.Guarantor__c
LEFT JOIN #ScoreTemp b ON a.Id = b.Guarantor__c
    AND b.Score = 'Fico'
LEFT JOIN #ScoreTemp c ON a.Id = c.Guarantor__c
    AND c.Score = 'Revbal'

【问题讨论】:

  • 请展示一些示例数据和预期结果。从数据中更容易理解你的需求

标签: sql sql-server database tsql relational-database


【解决方案1】:

您的代码应该没问题。但是如果你有缺失值,那么使用LEFT JOIN:

SELECT c.CBRRequestDate AS UpdateDate,
       stf.[Score Value] AS Fico,
       str.[Score Value] AS Revbal,
       NULL AS TUGroup,
       c.Vision_Practitioner_Id__c AS PID
FROM [SFOnPrem].[dbo].[Contact] c LEFT JOIN
     #ScoreTemp stf
     ON a.Id = stf.Guarantor__c AND
        stf.Score = 'Fico' LEFT JOIN
     #ScoreTemp str
     ON a.Id = str.Guarantor__c AND
        str.Score = 'Revbal';

请注意,我修复了表格别名,因此它们不再是无意义的字母,而是表格名称的缩写。我还更改了第一列,使其来自contact——在这种情况下,这对我来说似乎是合乎逻辑的,但它可能不正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2017-11-11
    • 2019-03-30
    • 2020-05-21
    相关资源
    最近更新 更多