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