关于求商品月均销售量的问题
这里有两个表,
CREATE TABLE LeaveStock /* 出库单表 */
(
ID INT IDENTITY(1,1) NOT NULL, /* 序号*/
LeaveStock_ID nchar(50) NOT NULL, /* 出库单编号 , 主键, 外键 (参照 LEAVESTOCK 表 )*/
LeaveDate datetime NOT NULL, /* 出库时间 */
Customer_ID nchar(50) NOT NULL, /* 客户编号,*/
LeaveType char(20) NOT NULL, /* 出库类型, "PS "表示配送, "PF "表示批发*/
StoreHouse_ID INT NOT NULL, /* 所出仓库 ,外键 ( 参照 STOREHOUSE 表)*/
ToStoreHouse_ID INT NOT NULL, /* 所入仓库 ,外键 ( 参照 STOREHOUSE 表)*/
Employee_ID INT NOT NULL /* 出库人 , 外键 ( 参照 EMPLOYEE 表)*/
/* 仓库保管员如何来验证出库单 ?? */
)
CREATE TABLE LeaveStock_Detail /* 出库单明细表 */
(
ID INT IDENTITY(1,1) NOT NULL, /* 序号*/
LeaveStock_ID nchar(50) NOT NULL, /* 出库单编号 , 主键, 外键 (参照 BACKSTOCK 表 )*/
Product_Number char(20) NOT NULL, /* 所出商品编号,主键, 外键 (参照 PRODUCT 表 ) */
Batch nchar(50) NOT NULL, /* 批号*/
BarCode nchar(50) NOT NULL, /* 条形码*/
Quantity float NOT NULL, /* 出库数量 */
Price money NULL /* 出库价格 */
)
我想通过这两个表用一个函数求出某个商品的月均销售量
月均销售量=销售总数/总销售月数
这里的销售月数为第一次发生销售的日期到现在的月数,用datediff函数可求出
datediff(month,startDate,endDate)
startDate=商品最早的出库日期
请问用一个函数的方式如何写出来,谢谢!!
[解决办法]
select Product_Number , Quantity/datediff(month,mindate,maxDate) 月均销售量 from
(
select Product_Number,min(LeaveDate) mindate,max(LeaveDate) maxDate , sum(Quantity) Quantity from
(
select a.Product_Number , b.LeaveDate ,a.Quantity from LeaveStock_Detail a,LeaveStock b where a.LeaveStock_ID = b.LeaveStock_ID
) t group by Product_Number
) m
[解决办法]
--这样?
select ld.Product_Number,sum(Quantity)/(datediff(month,min(LeaveDate),getdate()))
from LeaveStock l
join LeaveStock_Detail ld on ld.LeaveStock_ID = l.LeaveStock_ID
group by ld.Product_Number