不知道理解得对不对
SELECT
FROM
a
WHERE
DATE_FORMAT(date, '%Y-%m') = (
select date from(
SELECT
FROM
(
SELECT
DATE_FORMAT(date, '%Y-%m') AS date,
sum(wareqty * saleprice) AS sum
FROM
a
GROUP BY
DATE_FORMAT(date, '%Y-%m')
) m
WHERE
m.sum = 10000
ORDER BY
rand()
LIMIT 1
) n
)
兄弟,你能不能转成mssql 给我试下。
@im1coder: 我用mysql 写的,你替换下函数应该就可以了
@面具灬:我试了不行。销售表中每个月都10几万的销售额,现在是想从这里面抽取1万左右销售额的流水明细。1万可以上下浮动1%。 兄弟有其他思路没?
@im1coder: 你把那个sum=10000 改下呀,改成 在9900到10100之前再试试
你可以先根据data来group by,求出来的date用left来截取年月(比如data格式是2018-10-01,用left(data,7) as date),然后再用data来group by一下where wareqty*saleprice =10000就好
我刚才可能没表述清楚,其实就有个销售表中每个月都10几万的销售额,现在是想从这里面抽取1万左右销售额的流水明细
@im1coder: 你这个条件不多,那答案就太多了,比如1号是1W其他都是0,那我可以有太多结果,1,2号,1,2,3号,1,3号,13245,号都是1W你要确定条件才可以,比如日期段,几天
@_legends: 这个实际业务表里面的里面的流水每天都有,所以不存在这些为0的极端情况。其实是最初的想法就是想把这一万额度均摊到每一天,然后再取销售明细。
每月累计金额 wareqty*saleprice 为的1万 数据明细 条件是刚好等于一万 还是大于一万
select month(date),sum(wareqty),sum(saleprice) from a
where wareqty*saleprice>10000
group by month(date)
这样?
上下浮动1%都ok
@im1coder: select month(date),sum(wareqty),sum(saleprice) from a
where sum(wareqty)sum(saleprice)>=9900 and sum(wareqty)sum(saleprice)<=9900
group by month(date) 你试下 如果取年月的话 month(date) 换成这样 CONVERT(varchar(7), date, 120 )
@归来的小陆: 兄弟 ,你where 后面是什么意思?
@im1coder: sum(wareqty)乘sum(saleprice)>=9900 and sum(wareqty)乘sum(saleprice)<=10100 因为 博客园屏蔽了星号 *