我有一张表product
,数据如下所示。
id type account_id start_date end_date
1 APPLE 100 2015-01-27 2015-02-25
2 MANGO 100 2015-01-25 2015-02-25
3 GRAPES 100 2015-02-25 2015-04-25
4 MANGO 100 2015-02-25 2015-04-25
5 APPLE 101 2015-03-25 2015-04-25
6 MANGO 101 2015-03-25 2015-04-25
我想在此处实现的是根据MANGO
过滤掉account_id
类型的所有记录,并根据end_date
添加与同一帐户关联的其他类型。
结果应如下所示。
id type account_id start_date end_date other_types
2 MANGO 100 2015-01-25 2015-02-25 APPLE
4 MANGO 100 2015-02-25 2015-04-25 GRAPES
6 MANGO 101 2015-03-25 2015-04-25 APPLE
我在MySQL上尝试了以下查询,但它可以工作,但无法让它在SQL服务器上运行。任何帮助都会很棒。上面的结果就是我需要在SQL服务器中实现的所有内容。
SELECT yt1.`id`, yt1.`type`, yt1.`account_id`, yt1.`start_date`, yt1.`end_date`, yt2.`type` AS other_types
FROM `product` yt1, `product` yt2
WHERE
yt1.`account_id` = yt2.`account_id` AND
yt1.`type` = 'MANGO' AND
yt1.`end_date` = yt2.`end_date`
GROUP BY yt1.`id`
答案 0 :(得分:3)
这是SQL Server中的等效查询:
SELECT yt1.id, yt1.type, yt1.account_id, yt1.start_date, yt1.end_date,
yt2.type AS other_types
FROM product yt1 JOIN
product yt2
ON yt1.account_id = yt2.account_id AND
yt1.end_date = yt2.end_date
WHERE yt1.type = 'MANGO' AND yt2.type <> 'MANGO';
你的MySQL查询并没有真正起作用。它正在为其他类型选择一个任意值,这样你的样本数据就不会出现在&#34; Mango&#34;。
实际上,这适用于两个数据库。