【问题标题】:Case Else Statement from different tables来自不同表的 Case Else 语句
【发布时间】:2017-09-11 19:28:13
【问题描述】:

我正在尝试根据某种声明类型检索名称。看起来很容易,但它不适合我。我正在使用 2 个主表,claimexposure,以及一个 contactname 表。每个claim 可以有多个exposures,但每个exposure 只能有一个claim。两个表都包含一个 nameID 字段 - claim.nameIDexposure.nameIDnameIDContactName 表相关。

Contact Name

ID Name
111 Jim
222 Bob
333 John
444 Sam
555 Walt

通常,每个claim 可以有多个exposuresclaim 上的exposures 可以有相同的名称或不同的名称。 ids 的名称可在 exposure 上找到。

The exposure.nameID joins ContactName.ID

Claim claim.nameID ExposureNo exposure.nameID Name
A null 1 111 Jim
A null 2 222 Bob
A null 3 333 John
B null 1 444 Sam
B null 2 444 Sam

工人赔偿要求不同。每个工人索赔可以有多个曝光,但所有曝光都具有相同的名称。由于声明上的曝光具有相同的名称,因此可以找到名称 ID,而不是在曝光表上,而是在声明表上。想想看……claim.nameID 加入 ContactName.ID 作为 ClaimContactName。

Claim claim.nameID ExposureNo exposure.nameID Name
C 111 1 null Jim
C 111 2 null Jim
C 111 3 null Jim
D 555 1 null Walt
D 555 2 null Walt

我可以获得非工人comp claims 的名称,并且可以获得workers comp claims 的名称。但是,当我将 2 个查询放在一起时,我没有得到任何结果。

Select
CASE WHEN @Select(Claim\Policy Type) = 'Workers'' Compensation' THEN
CASE WHEN ClaimContact.Name IS NULL AND ClaimContact.Name.FirstName IS NULL THEN ClaimContact.LastName
WHEN ClaimContact.Name IS NOT NULL THEN ClaimContact.Name
ELSE ClaimContact.FirstName + Space(1) + ClaimContact.LastName END
ELSE
CASE WHEN Contact.Name IS NULL AND Contact.FirstName IS NULL THEN Contact.LastName 
WHEN Contact.Name IS NOT NULL THEN Contact.Name
ELSE Contact.FirstName + Space(1) + Contact.LastName END
END

这方面做得不多,但确实可以借助帮助来解决这个问题。先感谢您。

【问题讨论】:

  • 这是什么味道和版本的宇宙?据我所知,Universe SQL 不接受 CASE WHEN 语法,所以我认为这是错误的,或者您正在使用与 Universe 交互的东西。

标签: object universe


【解决方案1】:

这是针对使用信息设计工具的 SAP Universe。我最终创建了一个派生表,它提供了我所需要的东西,包括在此过程中学习新东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多