我有一个 Mysql 数据库,并且有 2 个表,其架构为:
CREATE TABLE IF NOT EXISTS `items` (
`id` int(10) unsigned NOT NULL,
`name` varchar(200) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `sold_records` (
`id` int(10) unsigned NOT NULL,
`item_id` int(10) NOT NULL,
`count` int(10) NOT NULL,
`sold_at` timestamp NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
如你所见,我有一些商品和一些销售记录,我想通过SQL查询得到这样的结果:
item_name sold_count_at_today sold_count_at_yestoday ... sold_count_at_today - 30day
item_1 x x ... x
item_2 x x ... x
...
item_n x x ... x
有人可以就通过 SQL 查询获得这样的结果提供一些建议吗?
你可以在SQLFiddle中调试它.
最佳答案
不幸的是,我认为你必须使用一堆 case 函数来完成此操作,如下所示:
SELECT i.name,
CASE WHEN CAST(sold_at AS date) = '2017-10-31' THEN 'X' ELSE NULL END AS '2017-10-31',
CASE WHEN CAST(sold_at AS date) = '2017-11-01' THEN 'X' ELSE NULL END AS '2017-11-01'
...
FROM items i
INNER JOIN sold_records r
ON i.id = r.item_id
我在你设置的 fiddle 上尝试过这个。您可以在这里查看:
关于mysql - 如何通过 SQL 查询获取某些用户生成的列的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47067411/