在 sql 中编写查询并在 Webi 报告中实现它的问题

Issue writing a query in sql and implementing it in Webi report

我正在尝试在 sql 中执行查询以仅获取与多个描述相关联的代理记录

示例: Table 姓名:代理人

AGENCY_ID   PRODUCT_DESC  AGENT number
100            ABC        2000
101            ABC        2001
101            XYZ        2002
102            XYZ        2003

AGENCY_ID 101 有 ABC 和 XYZ descriptions.From table,我只想从重叠的机构中提取记录

在上面的例子中我只想拉:

AGENCY_ID   PRODUCT_DESC  AGENT number
101         ABC           2001
101         XYZ           2002

我也在尝试在 Business objects webi 报告查询过滤器中执行此操作。

请告诉我如何解决我的问题。

提前致谢!

SQL中你可以使用subquery

select t.*
from table t
where exists (select 1 from table  where AGENCY_ID = t.AGENCY_ID and PRODUCT_DESC <> t.PRODUCT_DESC);

大多数 DBMS 不适用于 <>,因此请使用 != 以防万一。

其中一个

DECLARE @tblActivity AS TABLE (AGENCY_ID INT , PRODUCT_DESC VARCHAR(100), AGENTnumber INT)
INSERT INTO @tblActivity (Agency_id,Product_Desc,AGentNumber)
VALUES
(100,'ABC', 2000),
(101,'ABC', 2001),
(101,'XYZ', 2002),
(102,'XYZ', 2003)

SELECT tmp.*
FROM @tblActivity tmp 
INNER JOIN @tblActivity tmp1 ON tmp1.AGENCY_ID = tmp.AGENCY_ID
                      AND tmp1.AGENTnumber != tmp.AGENTnumber
                      AND tmp1.PRODUCT_DESC != tmp.PRODUCT_DESC

或者,如果您的 RDBMS 支持 window/analytic 函数;可以得到重复项的计数 agent_IDs,然后将该计数用作过滤器。

示例:这里的 cte 只是在 Hana 数据库中设置数据,所以我使用 from dummy 来获得一个派生的 table 称为 CTE。

然后我们在带有 count() 分析的子查询中使用派生的 table 来获取 agency_ID 的记录计数,然后我们显示所有此类记录,其中计数 > 1

需要一个subquery/inline视图,因为我们需要先生成CNT结果,然后才能对其进行限制;并且不能在 having / where 子句中使用 analytic/window 函数。

With CTE (AGENCY_ID,PRODUCT_DESC,AGENT_number) AS (
SELECT 100,            'ABC',        2000 from dummy union all
SELECT 101,            'ABC',        2001 from dummy union all
SELECT 101,            'XYZ',        2002 from dummy union all
SELECT 102,            'XYZ',        2003 from dummy)

SELECT B.* 
FROM (SELECT *, count(*) over (partition by Agency_ID) cnt 
      FROM CTE) B
WHERE cnt > 1