分区 table 基于加入 table
Partition table based on joined table
我们有 2 个表 Lead 和 Task。
一个线索可以有多个任务。
我们想确定 Lead 是否有一个 Task,其描述包含 String 'x'.
如果 Lead 有字符串,则它应该属于 group1,如果它不属于 group2。
然后我们要计算每组和每周的潜在客户。
我们遇到的问题是,如果一个 Lead 有多个任务,其中一个在其描述中有字符串 'x' 而其他没有,则它被计入两组。
我们需要一些类似于休息的东西;子查询的 IFF 子句中的语句,以便如果满足第一个条件 = 包含字符串 x,则不再计算其他任务。
我们将如何实现?
到目前为止,我们有以下声明:
--SQL:
SELECT LeadDate, GROUP, COUNT(LEAD_ID_T1)
FROM LEAD Lead INNER JOIN
(SELECT DISTINCT LEAD.ID AS LEAD_ID_T1,
IFF(CONTAINS(Task.DESCRIPTION,
'x'),
'GROUP1',
'GROUP2') AS GROUP
FROM TASK Task
RIGHT JOIN LEAD ON TASK.WHO_ID = LEAD.ID
) T1 ON T1.LEAD_ID_T1 = LEAD.ID
GROUP BY LeadDate,GROUP;
代码中断,因为它无法聚合度量。
非常感谢任何输入。这几天一直困扰着我。
我想 EXISTS
用 CASE
表达:
select l.*,
(case when exists (select 1
from task t
where t.who_id = l.id and
t.description like '%x%'
)
then 'GROUP1' else 'GROUP2'
end) as the_group
from lead l;
您也可以尝试这样的操作,CASE
1 和 0 然后取 SUM
SELECT LeadDate,
sum(CASE When t.description like '%x%'then 1 else 0 end) as Group1,
sum(CASE When t.description like '%x%'then 0 else 1 end) as Group2
FROM TASK t
RIGHT JOIN LEAD l ON t.WHO_ID = l.ID
GROUP BY LeadDate;
我们有 2 个表 Lead 和 Task。 一个线索可以有多个任务。 我们想确定 Lead 是否有一个 Task,其描述包含 String 'x'.
如果 Lead 有字符串,则它应该属于 group1,如果它不属于 group2。
然后我们要计算每组和每周的潜在客户。 我们遇到的问题是,如果一个 Lead 有多个任务,其中一个在其描述中有字符串 'x' 而其他没有,则它被计入两组。
我们需要一些类似于休息的东西;子查询的 IFF 子句中的语句,以便如果满足第一个条件 = 包含字符串 x,则不再计算其他任务。 我们将如何实现?
到目前为止,我们有以下声明: --SQL:
SELECT LeadDate, GROUP, COUNT(LEAD_ID_T1)
FROM LEAD Lead INNER JOIN
(SELECT DISTINCT LEAD.ID AS LEAD_ID_T1,
IFF(CONTAINS(Task.DESCRIPTION,
'x'),
'GROUP1',
'GROUP2') AS GROUP
FROM TASK Task
RIGHT JOIN LEAD ON TASK.WHO_ID = LEAD.ID
) T1 ON T1.LEAD_ID_T1 = LEAD.ID
GROUP BY LeadDate,GROUP;
代码中断,因为它无法聚合度量。
非常感谢任何输入。这几天一直困扰着我。
我想 EXISTS
用 CASE
表达:
select l.*,
(case when exists (select 1
from task t
where t.who_id = l.id and
t.description like '%x%'
)
then 'GROUP1' else 'GROUP2'
end) as the_group
from lead l;
您也可以尝试这样的操作,CASE
1 和 0 然后取 SUM
SELECT LeadDate,
sum(CASE When t.description like '%x%'then 1 else 0 end) as Group1,
sum(CASE When t.description like '%x%'then 0 else 1 end) as Group2
FROM TASK t
RIGHT JOIN LEAD l ON t.WHO_ID = l.ID
GROUP BY LeadDate;