Mysql “美国”?应该是c.region吗?通过他的输入,您可以看到所有行都有美国地区。。我怀疑@jarlh是否也更新了fiddle链接和示例数据。sqlfiddle很好,但是如果您在这里添加代码和示例数据,效果会更好。(sqlfiddle并不总是可用的,我想也不

Mysql “美国”?应该是c.region吗?通过他的输入,您可以看到所有行都有美国地区。。我怀疑@jarlh是否也更新了fiddle链接和示例数据。sqlfiddle很好,但是如果您在这里添加代码和示例数据,效果会更好。(sqlfiddle并不总是可用的,我想也不,mysql,sql,Mysql,Sql,“美国”?应该是c.region吗?通过他的输入,您可以看到所有行都有美国地区。。我怀疑@jarlh是否也更新了fiddle链接和示例数据。sqlfiddle很好,但是如果您在这里添加代码和示例数据,效果会更好。(sqlfiddle并不总是可用的,我想也不是很多年了,这篇文章就是如此。)好的,谢谢@jarlh我已经用细节更新了问题区域。为什么第二个和a.region=b.region='USA'?应该是c.region吗?通过他的输入,您可以看到所有行都有美国地区。。我怀疑这有什么关系吗@jar


“美国”?应该是c.region吗?通过他的输入,您可以看到所有行都有美国地区。。我怀疑@jarlh是否也更新了fiddle链接和示例数据。sqlfiddle很好,但是如果您在这里添加代码和示例数据,效果会更好。(sqlfiddle并不总是可用的,我想也不是很多年了,这篇文章就是如此。)好的,谢谢@jarlh我已经用细节更新了问题区域。为什么第二个
和a.region=b.region='USA'
?应该是c.region吗?通过他的输入,您可以看到所有行都有美国地区。。我怀疑这有什么关系吗@jarlh也更新了fiddle链接和示例数据。谢谢你。我正在努力找到每天分配给员工的新任务。我想查看日期&新分配的任务与前一天的任何特定日期进行比较。如果在第1天,员工被分配任务A和第2天,他再次在任务A上,我不应该在第2天看到任务A。但是,如果他在第2天被分配任务B,他在第3天返回任务n,我应该在第3天将任务A视为新任务。基本上,将今天的任务列表与昨天的任务列表进行比较,并展示新的内容-这是要求。如果你能帮助我更好地实现这一点,我将非常感谢你。谢谢你。我正在努力寻找每天分配给员工的新任务。我想查看日期&新分配的任务与前一天的任何特定日期进行比较。如果在第1天,员工被分配任务A和第2天,他再次在任务A上,我不应该在第2天看到任务A。但是,如果他在第2天被分配任务B,他在第3天返回任务n,我应该在第3天将任务A视为新任务。基本上,将今天的任务列表与昨天的任务列表进行比较,并展示新的内容-这是要求。如果你能帮助我更好地实现这一点,我将非常感谢你。非常感谢。我不能用小提琴来测试这个。小提琴不停地响-(我将在一个mysql实例上本地尝试这一点&让你知道完美。它可以按照我的要求工作。非常感谢。感谢你的帮助。再见:)非常感谢。我不能用小提琴来测试这个。小提琴不停地响-(我将在一个mysql实例上本地尝试这一点,并让您知道完美。它可以按照我的要求工作。非常感谢您。感谢您的帮助。祝您愉快:)
CREATE TABLE ForgeRock
    (`task_date` date, `employee_name` varchar(7), `task_name` varchar(55), `region` varchar(100));
INSERT INTO ForgeRock
    (`task_date`, `employee_name`, `task_name`, `region`)
VALUES
    ('2015-01-01', 'A', 'task A','USA'),
    ('2015-01-01', 'B', 'task B','Russia'),
    ('2015-01-01', 'C', 'task C','USA'),
    ('2015-01-01', 'D', 'task D','USA'),
    ('2015-01-02', 'A', 'task A','Russia'),
    ('2015-01-02', 'B', 'task B','Singapore'),
    ('2015-01-02', 'C', 'task C','USA'),
    ('2015-01-02', 'D', 'task D','USA'),
    ('2015-01-03', 'A', 'task C','Australia'),
    ('2015-01-03', 'B', 'task B','London'),
    ('2015-01-03', 'C', 'task D','USA'),
    ('2015-01-03', 'D', 'task A','USA'),
    ('2015-01-03', 'C', 'task C','London'),
    ('2015-01-04', 'A', 'task B','USA'),
    ('2015-01-04', 'B', 'task A','Singapore'),
    ('2015-01-04', 'C', 'task C','USA'),
    ('2015-01-04', 'D', 'task D','India'),
    ('2015-01-05', 'A', 'task F','USA'),
    ('2015-01-05', 'B', 'task F','USA'),
    ('2015-01-05', 'C', 'task G','China'),
    ('2015-01-05', 'D', 'task B','USA'),
    ('2015-01-06', 'A', 'task Y','USA'),
    ('2015-01-06', 'B', 'task X','USA'),
    ('2015-01-06', 'C', 'task E','USA'),
    ('2015-01-06', 'D', 'task R','USA'),
    ('2015-01-07', 'A', 'task W','China'),
    ('2015-01-07', 'B', 'task O','Russia'),
    ('2015-01-07', 'C', 'task P','USA'),
    ('2015-01-07', 'D', 'task S','London'),
    ('2015-01-07', 'C', 'task E','USA'),
    ('2015-01-08', 'A', 'task E','USA'),
    ('2015-01-08', 'B', 'task W','USA'),
    ('2015-01-08', 'C', 'task C','USA'),
    ('2015-01-08', 'D', 'task B','London');
SELECT   task_date, 
         employee_name, 
         Group_concat(task_name) 
FROM     ( 
             SELECT DISTINCT a.task_date, 
                             a.employee_name, 
                             CASE 
                                 WHEN b.employee_name IS NOT NULL
                                     AND c.employee_name IS NULL THEN NULL
                                 ELSE a.task_name
                             END AS task_name 
             FROM forgerock AS a 
             LEFT OUTER JOIN forgerock AS b 
                 ON  a.employee_name = b.employee_name = 'A'
                 AND a.task_date >= '2015-01-03' 
                 AND a.task_date <= '2015-01-06' 
                 AND b.task_date >= '2015-01-03' 
                 AND b.task_date <= '2015-01-06' 
                 AND a.task_date - 1 = b.task_date
                 AND a.region = b.region = 'USA' 
             LEFT OUTER JOIN forgerock AS c 
                 ON  a.employee_name = c.employee_name = 'A'
                 AND a.task_date >= '2015-01-03' 
                 AND a.task_date <= '2015-01-06' 
                 AND c.task_date >= '2015-01-03' 
                 AND c.task_date <= '2015-01-06' 
                 AND a.task_date - 1 = c.task_date
                 AND a.task_name <> c.task_name 
                 AND a.region = c.region = 'USA' 
             ORDER BY a.task_date, 
                      a.employee_name, 
                      a.task_name) AS temp 
GROUP BY task_date, 
         employee_name
    SELECT   task_date, 
         employee_name, 
         Group_concat(task_name) 
FROM     ( 
                         SELECT DISTINCT a.task_date, 
                                         a.employee_name, 
                                         CASE 
                                                         WHEN b.employee_name IS NOT NULL
                                                                 AND  COALESCE(c.employee_name, '00') THEN '00'
                                                         ELSE a.task_name
                                         END       AS task_name 
                         FROM            forgerock AS a 
                         LEFT OUTER JOIN forgerock AS b 
                         ON              a.employee_name = b.employee_name = 'A'
                         AND             b.task_date >= '2015-01-03' 
                         AND             b.task_date <= '2015-01-06' 
                         AND             a.task_date - 1 = b.task_date
                         AND             a.region = b.region = 'USA' 
                         LEFT OUTER JOIN forgerock AS c 
                         ON              a.employee_name = c.employee_name = 'A'
                         AND             c.task_date >= '2015-01-03' 
                         AND             c.task_date <= '2015-01-06' 
                         AND             a.task_date - 1 = c.task_date
                         AND             a.task_name <> c.task_name 
                         AND             a.region = b.region = 'USA' 
                         **WHERE  a.task_date >= '2015-01-03' AND   a.task_date <= '2015-01-06'**
                         ORDER BY        a.task_date, 
                                         a.employee_name, 
                                         a.task_name) AS temp 
GROUP BY task_date, 
         employee_name