查询的条件:开始时间,结束时间,产品类型。
原表:
t_product : name money type num
t_product_detail: ttongle(吨位)
显示的列解释:55T,100-150T,表示产品的吨位
举例来说:我这个月A类型的产品分别购进了2个,一个是120T,一个是300T,那就在对应的列下显示就行了,还有显示其他数据。
净值就是用金额/数量。所有的时间取数均为product_time,用它和开始,结束时间比较即可
还有疑惑的,欢迎私信
上个图,方便阅读。
create proc procname
@stime varchar(20),
@etime varchar(20),
@ptype varchar(10),
as
select * from table
CREATE PROCEDURE [dbo].[selectProduct]
@startTime varchar(20),
@endTime varchar(20),
@productType varchar(6)
AS
BEGIN
SET NOCOUNT ON;
select * from product where productType=@productType and product_time between @startTime and @endTime
END
这个你运行试试,看看是不是你需要的。
你的源表是怎么样的,通过存储过程,要输出什么样的表,这问题都没描述清楚,要别人怎么回答?
SELECT a.产品类型 ,
a.产品名称 ,
a.金额 ,
a.数量 ,
a.金额 / a.数量 AS 净值 ,
b.吨位 INSERT INTO #temp1
FROM t_product a
LEFT OUTER JOIN t_product_detail b ON ( a.产品类型 = b.产品类型 )
WHERE product_time > 开始时间
AND product_time < 结束时间
AND a.产品类型 = 产品类型
SELECT aa.* ,
bb.counts AS 个数55 ,
bb.sums AS 金额55,
cc.counts AS 个数150 ,
cc.sums AS 金额150
FROM t_product aa
LEFT OUTER JOIN ( SELECT 产品类型 ,
COUNT(*) AS counts ,
SUM(金额) AS sums
FROM #temp1
WHERE 吨位 < 55
GROUP BY 产品类型
) bb ON ( aa.产品类型 = bb.产品类型 )
LEFT OUTER JOIN ( SELECT 产品类型 ,
COUNT(*) AS counts ,
SUM(金额) AS sums
FROM #temp1
WHERE 吨位 < 150 AND 吨位 > 50
GROUP BY 产品类型
) cc ON ( aa.产品类型 = cc.产品类型 )
大概思路是这样的。200T,250T-400T的自己加。
如果要存储过程,请加上
CREATE PROCEDURE [dbo].[selectProduct]
@开始时间 varchar(20),
@结束时间 varchar(20),
@产品类型 varchar(6)
AS
BEGIN