Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询带月结转的预支工资盘点_Sql_Greatest N Per Group - Fatal编程技术网

SQL查询带月结转的预支工资盘点

SQL查询带月结转的预支工资盘点,sql,greatest-n-per-group,Sql,Greatest N Per Group,我通过选择月份显示所有月份结转的总余额 如果我选择了三月份及以下月份 emp_id ==== bal_amt ==== advance_sal ==== date ==== basic_salary ----------------------------------------------------------------- 1 48000 2000 2019-01-10 50000 1 46000

我通过选择月份显示所有月份结转的总余额 如果我选择了三月份及以下月份

emp_id ==== bal_amt ==== advance_sal ==== date ==== basic_salary ----------------------------------------------------------------- 1 48000 2000 2019-01-10 50000 1 46000 2000 2019-01-11 50000 2 78000 2000 2019-01-11 80000 2 75000 3000 2019-01-11 80000 1 49000 1000 2019-02-10 50000 2 74000 6000 2019-02-11 80000 如果我选择2月份,那么我希望选择每个id的最后余额金额,总余额金额小于2月份

请参阅下面所选的行

emp_id ==== bal_amt ==== advance_sal ==== date ==== basic_salary ----------------------------------------------------------------- 1 48000 2000 2019-01-10 50000 1 46000 2000 2019-01-11 50000 -- select 2 78000 2000 2019-01-11 80000 2 75000 3000 2019-01-11 80000 -- select 1 49000 1000 2019-02-10 50000 -- select 2 74000 6000 2019-02-11 80000 -- select 所以总的结果是

emp_id ==== bal_amt ==== advance_sal ==== date ==== basic_salary ---------------------------------------------------------------- 1 46000 2000 2019-01-11 50000 2 75000 3000 2019-01-11 80000 1 49000 1000 2019-02-10 50000 2 74000 6000 2019-02-11 80000 emp_id ==== total_bal_amount less than February ---------------------------------------------------------------- 1 95000 2 149000
任何关于编写sql查询的帮助我猜您需要以下查询。我不确定你是如何决定你需要的多个相同日期的最后余额的,因为你的日期没有时间戳

SELECT *, SUM(bal_amt) over(partition by emp_id) fROM (
SELECT emp_id, bal_amt, advance_sal, date, basic_salary, RN = Row_number() over(partition by emp_id order by date desc)
FROM advance_sal where  
     MONTH(`ad_date`)<="2"
     AND YEAR(`ad_date`)<="2019" ) a where RN = 1 

你用的是什么产品?SQL只是一种查询语言,不是特定数据库产品的名称,您的查询是无效的标准SQL。请为您正在使用的数据库产品添加一个。很抱歉,答复太晚。请你详细说明你的问题,我其实没有得到我是新手。抱歉,迟了答复。此查询在分区附近手动检查时出错。请告诉我获取数据的确切查询。我不熟悉分区查询。我的MYSQL版本是5.6.36。我想它在此版本中不运行
SELECT *, SUM(bal_amt) over(partition by emp_id) fROM (
SELECT emp_id, bal_amt, advance_sal, date, basic_salary, RN = Row_number() over(partition by emp_id order by date desc)
FROM advance_sal where  
     MONTH(`ad_date`)<="2"
     AND YEAR(`ad_date`)<="2019" ) a where RN = 1