用于获取唯一ID的单行记录的SQL逻辑

时间:2014-05-02 16:17:35

标签: sql sql-server tsql cognos cognos-bi

![Cognost报告工作室查询资源管理器]

以下是表格的快照。

**Acctno     ClientNo     ClientName     PrimaryOffId         SecondaryOffID**
  101      11111        ABC corp           3                        Not Defined
  102      11116        XYZ Inc            5                        Not Defined
  103      11113        PQRS Corp          2                        9
  104      55555        Food LLC           4                        11
  105      99999        Kwlg Co            1                        Not Defined
  106      99999        Kwlg Co            1                        Not Defined
  107      11112        LMN Corp           Not Defined              6
  108      11112        LMN Corp           Not Defined              6
  109      11115        Sleep Co           4                        10
  110      44444        Cool Co            Not Defined              8
  111      11114        Sail LLC           3                        Not Defined
  112      66666        Fun Inc            1                        Not Defined
  113      88888        Job LLC            5                        12
  114      22222        Acc Co             Not Defined              Not Defined
  115      77777        Good Corp          2                        Not Defined
  116      33333        City  LLC          Not Defined              7
  117      33333        City  LLC          Not Defined              7
  118      33333        City  LLC          Not Defined              7
  119      11111        ABC corp           3                        Not Defined

我想将PrimaryOffID和SecondaryOffID替换为来自此表的名称

EmpID     Names
  1      Cathy
  2      Chris
  3      John
  4      Kevin
  5      Mark
  6      Celine
  7      Jane
  8      Phil
  9      Jess
 10      Jose
 11      Nick
 12      Rosy

结果应如下所示:请注意,如果Cathy是PrimaryOfficer,则她不能成为副主任,反之亦然。此逻辑适用于所有名称

Acctno  ClientNo    Client Name PrimOffName SecondaryOffName
 101    11111   ABC corp          John           Not Defined
 102    11116   XYZ Inc           Mark           Not Defined
 103    11113   PQRS Corp         Chris          Jess
 104    55555   Food LLC          Kevin          Nick
 105    99999   Kwlg Co           Cathy          Not Defined
 106    99999   Kwlg Co           Cathy          Not Defined
 107    11112   LMN Corp          Not Defined        Celine
 108    11112   LMN Corp          Not Defined        Celine
 109    11115   Sleep Co          Kevin          Jose
 110    44444   Cool Co           Not Defined    Phil
 111    11114   Sail LLC          John           Not Defined
 112    66666   Fun Inc           Cathy          Not Defined
 113    88888   Job LLC           Mark           Rosy
 114    22222   Acc Co            Not Defined   Not Defined
 115    77777   Good Corp         Chris          Not Defined
 116    33333   City  LLC         Not Defined   Jane
 117    33333   City  LLC         Not Defined   Jane
 118    33333   City  LLC         Not Defined   Jane
 119    11111   ABC corp          John           Not Defined

但相反它看起来像这样:

Acctno  ClientNo    ClientName  PrimOffName SecondaryOffName
   101  11111   ABC corp         John             Not Defined
   102  11116   XYZ Inc          Mark             Not Defined
   103  11113   PQRS Corp        Chris            Not Defined
   103  11113   PQRS Corp        Not Defined           Jess
   104  55555   Food LLC         Kevin            Not Defined
   104  55555   Food LLC         Not Defined     Nick
   105  99999   Kwlg Co          Cathy            Not Defined
   106  99999   Kwlg Co          Cathy            Not Defined
   107  11112   LMN Corp         Not Defined         Celine
   108  11112   LMN Corp         Not Defined         Celine
   109  11115   Sleep Co         Kevin            Not Defined
   109  11115   Sleep Co         Not Defined              Jose
   110  44444   Cool Co          Not Defined              Phil
   111  11114   Sail LLC         John             Not Defined
   112  66666   Fun Inc          Cathy            Not Defined
   113  88888   Job LLC          Mark             Not Defined
   113  88888   Job LLC          Not Defined              Rosy
   114  22222   Acc Co           Not Defined              Not Defined
   115  77777   Good Corp        Chris            Not Defined
   116  33333   City  LLC        Not Defined    jane
   117  33333   City  LLC        Not Defined    jane
   118  33333   City  LLC        Not Defined    jane
   119  11111   ABC corp         John            Not Defined

请注意,现在Acctno不再具有唯一性,名称应该同时存在于两个字段中,它将分隔并在下一行中提供输出,从而创建多个记录。我尝试了各种选择,但它没有用。请注意,我在Cognos Studio中创建此报告。请建议可能的查询以获得所需的结果。提前致谢。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您没有说明您正在使用哪个版本的Cognos。 " Cognos Studio"很暧昧。我最熟悉8.4.1,但即便如此,如果您尝试在Cognos模型,Query Studio,Event Studio或Report Studio中进行定义,也不会说。

其次,你应该总是显示你在StackOverflow上提问时到目前为止所做的事情。人们希望看到你做了什么来表明你想要修复,而不是重复狮子的工作份额。这就是为什么你得到了投票。

就普通SQL而言,您希望这样做:

SELECT a.Acctno, a.ClientNo, a.ClientName, coalesce(e1.Names,'Not Defined') "PrimaryOffName", coalesce(e2.Names,'Not Defined') "SecondaryOffName"
FROM Account a
LEFT OUTER JOIN Emp e1
    ON t.PrimaryOffID = e1.EmpID
LEFT OUTER JOIN Emp e2
    ON t.PrimaryOffID = e2.EmpID

我制作了表名。您可以在Report Studio中为Emp创建两个查询,然后将其连续加入Account查询。

如果您能够,您希望将OffID字段移到单独的仲裁表中,并将其从Account表中删除。然后,您可以在该联结表中创建一个标识主要和辅助的状态字段或标志。