如果表中不存在行,如何获取另一行的值?

时间:2017-01-26 14:01:24

标签: mysql null coalesce

我有两个名为data = pd.read_csv('cze.csv') dateparse = lambda dates: pd.datetime.strptime(dates, '%Y') data = pd.read_csv('cze.csv', parse_dates = [0], index_col = 'Year', date_parser = dateparse) data2 = pd.read_csv('AirPassengers.csv') dateparse2 = lambda dates: pd.datetime.strptime(dates, '%Y-%m') data2 = pd.read_csv('AirPassengers.csv', parse_dates = [0], index_col = 'Month', date_parser = dateparse2) ts = data['Rate'] ts2 = data2['#Passengers'] tbl_brands的表。 在tbl_counter_stock中,有品牌ID和品牌名称的键值对。 tbl_brands列中的tbl_counter_stockbrnd_id2000ml1000mlstock。 每行代表不同库存的利口酒品牌 O型加仓, R-接收, S-销售, C-关闭 我想从此表中获取每个品牌的Closing Stock的记录,如果此表中没有C(Closing Stock)的条目,那么我想获取该品牌的O(开盘股票)。如果已关闭该品牌的库存,我将获得开仓和结算库存的两个值。这对我来说不是一个理想的结果。我只想在没有C(收盘股票)的情况下获得O(开仓股票)。 提前谢谢。

stock_date

1 个答案:

答案 0 :(得分:1)

我认为创建表格时解决方案更容易理解:
仅使用Closing_Stock创建一个表(table_C)(WHERE CLAUSE减少到B.STOCK =' C') 然后从你的tbl_brands左边加入你的table_C,找到所有缺少收盘股票记录的brand_ids,并加入你的tbl_counter_stock(WHERE B.STOCK =' O')来插入缺失的id。

CREATE TABLE brand_stock_overview (Key brnd_id(brnd_id))
SELECT A.brnd_id,A.brnd_name,'2000ml' capacity,COALESCE(B.`2000ml`,0)  
bottles, B.stock,B.stock_date
FROM tbl_brands A  
LEFT JOIN tbl_counter_stock AS B ON(A.BRND_ID=B.BRND_ID)
WHERE B.STOCK ='C'
AND B.STOCK_DATE='2017-01-18';

INSERT INTO brand_stock_overview
SELECT A.brnd_id,A.brnd_name,'2000ml' capacity,COALESCE(B.`2000ml`,0)    
bottles, B.stock, B.stock_date
FROM tbl_brands A
LEFT JOIN tbl_counter_stock AS B ON(A.BRND_ID=B.BRND_ID)
LEFT JOIN brand_stock_overview C ON(A.BRND_ID=C.BRND_ID)
where B.STOCK='O' AND C.BRND_ID IS NULL 
AND B.STOCK_DATE='2017-01-18';