COGNOS中的棘手选择

时间:2014-07-21 15:26:50

标签: compare substring selection where-clause cognos

我在A列中有一个包含部件号列表的表。我将称之为“原始数字”(12345)和“7-”数字,以“7-”开头,然后只需添加一个原始数字到最后(7-12345)。我正在尝试仅选择在删除前两个字符时原始数字也存在的“7-”数字。

我无法定义WHERE条件以确保所选的“7-”部件号也具有存在于同一列中的相应原始编号(某些“7-”编号中没有相应的原始编号表 - 我只想要那些。)

一旦确定了这些配对,我需要将“7-”部件号的B列中的值与相应“原始”部件号的C列中的值进行比较。有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您将不得不在Cognos中使用两个查询。一个查询将为您提供以“7-”开头的部分编号,以及删除部分编号中删除“7-”的部分。

select
pn.partnum,
right(pn.partnum,len(pnpartnum) -2) as Trimmed
from
partnumbers pn
where
pn.partnum like ''7-%'

您的第二个查询只会让您获得所有不以“7 - ”开头的部分号码。

select 
* from 
partnumbers 
where partnum not like '7%'

您将添加一个连接查询,并在其中使用这两个查询,从而产生以下内容:

select
query1.partnum,
query2.partnum
from
(
select
pn.partnum,
right(pn.partnum,len(pnpartnum) -2) as Trimmed
from
partnumbers pn
where
pn.partnum like '7-%' ) Query1

inner join
(select 
* from 
partnumbers 
where partnum not like '7%') Query2
on query1.trimmed = query2.partnum

这是一个非常简化的SQL Fiddle示例。