通过具有max的lead_id(当field_number = 21然后是值结束时的情况)>选择来自wp_rg_lead_detail组的max(field_number = 7然后是value end)的值。 curdate()我已经尝试过我最好的阅读文档并在Google上搜索但我无法弄明白..
我需要构建一个查询,如果field_number 19的值为1且field_number 21的日期超过当前日期,则选择field_number 7的值。
这就是我目前所拥有的:
SELECT * FROM wp_rg_lead_detail WHERE field_number IN (7, 19) AND value = 1
但这只给了我field_number为19的行
修改 我需要获取field_number 7的值,其中field_number 19超过当前日期。可以存在多个in_nance,其中field_number是7(每个lead_id是不同的“人”,我需要field_number 7值)其中field_number 22的值1不再适用
EDIT2: 嘿伙计们谢谢!在您的帮助下,问题现在已经解决了。我现在使用的代码是(谢谢sgeddes):
SELECT value FROM wp_rg_lead_detail WHERE field_number = 7 AND EXISTS (SELECT field_number, value FROM wp_rg_lead_detail WHERE field_number = 21 AND value > CURDATE())
答案 0 :(得分:0)
这应该可以解决问题
SELECT o.value
FROM wp_rg_lead_detail o
JOIN wp_rg_lead_detail t1
ON t1.lead_id = o.lead_id
AND t1.form_id = o.form_id
AND t1.field_number = 19
AND t1.value = 1
JOIN wp_rg_lead_detail t2
ON t2.lead_id = o.lead_id
AND t2.form_id = o.form_Id
AND t2.field_number = 21
AND t2.value > CONVERT(char(10), GetDate(),126)
WHERE o.field_number = 7
修改强> 感谢Hans提醒我忘记了Where子句:)
答案 1 :(得分:0)
您可以将group by
与max
和case
一起使用。我假设唯一群组是lead_id
和form_id
:
select max(case when field_number = 7 then value end) value
from wp_rg_lead_detail
group by lead_id, form_id
having max(case when field_number = 19 then value end) = 1
and max(case when field_number = 21 then value end) > curdate()
最后一部分取决于你使用的是哪个数据库(curdate是mysql,getdate()是sql server),但是这应该给你一般的想法。您可能还需要将值转换为日期。
答案 2 :(得分:0)
您可以使用
WHERE EXISTS ( subquery );
条件
例如(据我所知):
SELECT *
FROM wp_rg_lead_detail
WHERE field_number IN (7,19)
AND EXISTS (
SELECT *
FROM wp_rg_lead_detail
WHERE field_number = 19 AND value = 1)