我有一个名为productfops的表,我有实体,服务和fop等列
| 实体|服务|FOP|
| --|--|--|
| GPL| YouTube|信用|
| GPL|格佩|信用|
| GPL|发挥|借记|
| 加雷什|YouTube|信用|
| 加雷什|格佩|信用|
这是已经存在的数据,并且如果存在与实体和服务(如gpl、gsuit、credit)组合的任何新服务,则应该识别该组合,接下来,与实体、服务、fop(如gpl、YouTube、debit)的组合,因为该组合也不存在,所以应该识别该组合。
需要这样的结果
Entity | services | fop |
|:---- |:------:| -----:|
| Gpl | YouTube | debit
| Gpl | gsuit | credit |
字符串
请帮忙
我用的脚本
SELECT entity, service, fop
FROM tableA
WHERE (entity, service) IN (
SELECT entity, service
FROM tableA
GROUP BY entity, service
HAVING COUNT(*) > 1
);
型
这不起作用,因为已经存在唯一列,因此>1或=1不准确
我尝试的另一个脚本是
CREATE OR REPLACE TABLE b AS
(
-- Combinations of two columns (entity and service)
SELECT a.entity, a.service, NULL AS fop
FROM a
WHERE CONCAT(a.entity, ' - ', a.service) NOT IN (
SELECT CONCAT(b.entity, ' - ', b.service)
FROM b
)
UNION ALL
-- Combinations of three columns (entity, service, and fop)
SELECT a.entity, a.service, a.fop
FROM a
WHERE CONCAT(a.entity, ' - ', a.service, ' - ', a.fop) NOT IN (
SELECT CONCAT(b.entity, ' - ', b.service, ' - ', b.fop)
FROM b
)
)
型
即使这样也不起作用,因为我正在使用不在同一张table上
1条答案
按热度按时间svmlkihl1#
你的问题不太清楚。
如果你想找到当前不在你的表中的不同
entity
、services
和fop
值的所有可能组合,你可以交叉连接各个不同的查询以获得所有组合,然后左连接到原始表以查找丢失的组合。类似于这样:字符串
对于给定的样本数据,此输出:
| 实体|服务|FOP|实体|服务|FOP|
| --|--|--|--|--|--|
| GPL|发挥|信用||||
| 加雷什|发挥|信用||||
| 加雷什|发挥|借记||||
| GPL|格佩|借记||||
| 加雷什|格佩|借记||||
| GPL| YouTube|借记||||
| 加雷什|YouTube|借记||||