qq_39372401
2018-02-26 03:08
采纳率: 74.1%
浏览 2.0k

求教存储过程写法。(SQL SERVER)

目标样式
查询的条件:开始时间,结束时间,产品类型。
原表:
t_product : name money type num
t_product_detail: ttongle(吨位)
显示的列解释:55T,100-150T,表示产品的吨位
举例来说:我这个月A类型的产品分别购进了2个,一个是120T,一个是300T,那就在对应的列下显示就行了,还有显示其他数据。
净值就是用金额/数量。所有的时间取数均为product_time,用它和开始,结束时间比较即可
还有疑惑的,欢迎私信

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 红帽01 2018-03-10 02:44
    已采纳

    上个图,方便阅读。

    图片说明

    打赏 评论
  • oZuoQiaYin12 2018-02-26 03:56

    create proc procname
    @stime varchar(20),
    @etime varchar(20),
    @ptype varchar(10),
    as
    select * from table

    打赏 评论
  • vv异世邪君vv 2018-02-26 06:19

    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

    这个你运行试试,看看是不是你需要的。

    打赏 评论
  • Sevan_Li 2018-02-28 07:35

    你的源表是怎么样的,通过存储过程,要输出什么样的表,这问题都没描述清楚,要别人怎么回答?

    打赏 评论
  • 红帽01 2018-03-10 02:42

    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

    打赏 评论

相关推荐 更多相似问题