gpt4 book ai didi

MySQL 查询——检索两个不同年份的数据

转载 作者:行者123 更新时间:2023-11-30 23:34:28 24 4
gpt4 key购买 nike

我似乎无法正确执行此 MySQL 查询。我的表包含零售店的年度库存数据。这是表架构:

CREATE TABLE IF NOT EXISTS `inventory_data` (
inventory_id int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
store_id smallint unsigned NOT NULL,
inventory_year smallint unsigned NOT NULL,
shortage_dollars decimal(10,2) unsigned NOT NULL
)
engine=INNODB;

每个商店都被分配到一个地区,在这个表中(一些不相关的字段被删除):

CREATE TABLE IF NOT EXISTS `stores` (
store_id smallint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
district_id smallint unsigned not null
)
engine=INNODB;

我希望能够检索给定区域内所有商​​店在给定两年内的短缺金额。每个店铺的库存数据只有在盘点完成后才会被添加到inventory_data表中,所以并不是一个区域内的所有店铺都会一直被代表。

此查询用于返回给定年份给定地区内所有商店的库存数据(例如:2012 年 1 区的商店):

SELECT stores.store_id, inventory_data.shortage_dollars 
FROM stores
LEFT JOIN inventory_data ON (stores.store_id = inventory_data.store_id)
AND inventory_data.inventory_year = 2012
WHERE stores.district_id = 1

但是,我需要能够获取一个地区内商店两年的数据,以便数据看起来接近于此:

store_id | yr2011 | yr2012

最佳答案

对于您需要的具体结果格式,您可以尝试以下查询:

SELECT `s`.`store_id`, `i`.`shortage_dollars` AS `yr2011`, `i1`.`shortage_dollars` AS `yr2012`
FROM `stores` `s`
LEFT JOIN `inventory_data` `i` ON `s`.`store_id` = `i`.`store_id`
AND `i`.`inventory_year` = 2011
LEFT JOIN `inventory_data` `i1` ON `s`.`store_id` = `i1`.`store_id`
AND `i1`.`inventory_year` = 2012
WHERE `s`.`district_id` = 1

或者,您也可以尝试下一个更简单的查询。

SELECT `s`.`store_id`, `i`.`inventory_year`, `i`.`shortage_dollars`
FROM `stores` `s`
LEFT JOIN `inventory_data` `i` ON `s`.`store_id` = `i`.`store_id`
WHERE `s`.`district_id` = 1
AND `i`.`inventory_year` IN (2011, 2012)
ORDER BY `s`.`store_id`, `i`.`inventory_year`

希望对您有所帮助!

关于MySQL 查询——检索两个不同年份的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8765643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com