日期:2014-05-16  浏览次数:20577 次

连开3贴,解决!! 分全送
(sql2000环境)如下三个表拷贝后可以直接创建的:
初学者,求怎样写传入参数,这里的sql都能直接执行的,不输入参数也能只能执行,求最终有执行结果的!
--创建销售表
CREATE TABLE [Y_liushui] (
[id] [int] IDENTITY (1, 1) NOT NULL , 
[jinhuodanwei] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL , 
[cpid] [int] NULL ,
[yppinming] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , 
[ypjine] [decimal](18, 4) NULL , 
[shuliang] [decimal](18, 4) NOT NULL ,
[caozuobiaoshi] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[caozuoriqi] [datetime] NULL CONSTRAINT [DF_Y_liushui1_caozuoriqi] DEFAULT (getdate()),
CONSTRAINT [PK_YP_liushui1] PRIMARY KEY  CLUSTERED 
(
[id]
)  ON [PRIMARY] 
) ON [PRIMARY]
GO
id jinhuodanwei cpid yppinming ypjine shuliang caozuobiaoshi caozuoriqi
1 大兴店 1 香蕉 10 2 产品销售 2014-04-05 10:01:01
2 大兴店 1 香蕉 5 1 产品销售 2014-04-05 10:01:01

--创建产品表 
CREATE TABLE [Y_baseinfo] (
[id] [int] IDENTITY (1, 1) NOT NULL , 
[cpid] [int] NULL ,
[yppinming] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL  
CONSTRAINT [PK_Y_baseinfo] PRIMARY KEY  CLUSTERED 
(
[id]
)  ON [PRIMARY] 
) ON [PRIMARY]
GO
id cpid yppinming
1 1 香蕉
2 2 苹果

--创建客户表
CREATE TABLE [Y_xskehu] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[jhdanwei] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_Y_xskehu_jhdanwei] DEFAULT (''),
[diqu] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_Y_xskehu_diqu] DEFAULT ('')  
CONSTRAINT [PK_miye_jinhuokehu] PRIMARY KEY  CLUSTERED 
(
[id]
)  ON [PRIMARY] 
) ON [PRIMARY]
GO
id jhdanwei diqu
1 大兴店 北京
2 东直店 上海

-----------------以下是SQL查询过程---------------
问题: 如何用存储过程的方式,将下面的红字部分用给定的传入参数来代替?
diqu like '%%' and jhdanwei like '%%'  分别传入@diqu、@jhdanwei,''2014-01-01'' 与 ''2014-05-01''分别传入日期1、日期2,请问该怎么写,要显示运行结果的sql

IF EXISTS (SELECT name FROM sysobjects
         WHERE name = 'jieguo' AND type = 'P')
   DROP PROCEDURE jieguo
go
IF EXISTS(SELECT NAME FROM sysobjects AS o WHERE NAME = 'T_jiamengdiantongji') 
    DROP TABLE T_jiamengdiantongji  
GO

--create procedure jieguo
--@diqu varchar(50),
--@jhdanwei varchar(50) 
--@日期1 datetime(),
--@日期2 datetime()
--as
DECLARE @sql VARCHAR(8000)  
DECLARE @str VARCHAR(8000)  
SELECT @sql = ISNULL(@sql , '') + N' sum(case when jhdanwei = N''' + jhdanwei + ''' then shuliang else 0 end) as [' +jhdan