欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请教以下sql代码怎么在asp中调用

更新时间: 2014-01-05 02:18:07 责任编辑: Author_N1

 

请问以下SQL代码如何在ASP中调用
if not object_id(N'[入库表]') is null
drop table [入库表]
go
CREATE TABLE [入库表](产品代码 NVARCHAR(20),产品名称 NVARCHAR(20),产品型号 NVARCHAR(20), 入库数量 INT,入库单价 MONEY,入库时间 DATETIME)

INSERT 入库表 
select N'001',N'名称1',N'型号1',20,25,'2011-10-9' union all
select N'001',N'名称1',N'型号1',25,20,'2011-10-10' union all
select N'001',N'名称1',N'型号1',22,23.5,'2011-11-11' UNION ALL
select N'001',N'名称1',N'型号1',100,50,'2011-11-12'
GO
if not object_id(N'出库表') is null
drop table 出库表
Go
Create table 出库表([产品代码] nvarchar(3),[产品名称] nvarchar(3),[产品型号] nvarchar(3),[出库数量] int,[出库时间] Datetime)
Insert 出库表
select N'001',N'名称1',N'型号1',55,'2011-11-13'
Go
SELECT 
[产品代码],
[产品名称],
[出库时间],
SUM([数量]) AS [先出数量],
CAST( SUM([数量]*入库单价)/SUM([数量]) AS decimal(18,2) )AS [先出单价],
SUM([数量]*入库单价) AS 先出金额,
SUM(入库数量) AS 结存数量 ,
CAST(SUM(入库数量*入库单价)/SUM(入库数量)AS decimal(18,2) ) AS 结存单价, 
SUM(入库数量*入库单价) AS 结存金额
FROM 
(
SELECT 
a.[产品代码],
a.[产品名称],
b.[出库时间],
[数量]=CASE WHEN a.sumQty-a.入库数量 <b.sumQty then case  when   b.sumQty <a.sumQty   then   b.sumQty   else   a.sumQty   END -
case   when   b.sumQty-b.[出库数量] <a.sumQty-a.入库数量   then   a.sumQty-a.入库数量   else   b.sumQty-b.[出库数量] END
ELSE 0 end
,a.入库单价,
CASE WHEN (a.sumQty-a.入库数量) >b.sumQty  then a.入库数量  WHEN a.sumQty>b.sumQty THEN a.sumQty-b.sumQty  ELSE 0 END AS 入库数量

FROM (SELECT *,(SELECT sum(入库数量) FROM 入库表 WHERE 产品代码=a.产品代码 AND 入库时间<=a.入库时间 ) sumQty  FROM 入库表 AS a)a
left JOIN 
(SELECT *,(SELECT sum([出库数量]) FROM 出库表 WHERE 产品代码=a.产品代码 AND [出库时间]<=a.[出库时间] ) sumQty  FROM 出库表 AS a)b ON a.产品代码=b.产品代码
WHERE   
b.sumQty-b.[出库数量] <a.sumQty   
)T
GROUP BY 
[产品代码],
[产品名称],
[出库时间]

/*
产品代码 产品名称 出库时间 先出数量 先出单价 先出金额 结存数量 结存单价 结存金额
001 名称1 2011-11-13 00:00:00.000 55 22.45 1235.00 112 47.16 5282.00
*/

--参考方法--
--先创建视图,这个的好处是能够把复杂的sql语句化为视图,直接访问视图
CREATE VIEW view_Storage
as
SELECT 
[产品代码],
[产品名称],
[出库时间],
SUM([数量]) AS [先出数量],
CAST( SUM([数量]*入库单价)/SUM([数量]) AS decimal(18,2) )AS [先出单价],
SUM([数量]*入库单价) AS 先出金额,
SUM(入库数量) AS 结存数量 ,
CAST(SUM(入库数量*入库单价)/SUM(入库数量)AS decimal(18,2) ) AS 结存单价, 
SUM(入库数量*入库单价) AS 结存金额
FROM 
(
SELECT 
a.[产品代码],
a.[产品名称],
b.[出库时间],
[数量]=CASE WHEN a.sumQty-a.入库数量 <b.sumQty then case  when   b.sumQty <a.sumQty   then   b.sumQty   else   a.sumQty   END -
case   when   b.sumQty-b.[出库数量] <a.sumQty-a.入库数量   then   a.sumQty-a.入库数量   else   b.sumQty-b.[出库数量] END
ELSE 0 end
,a.入库单价,
CASE WHEN (a.sumQty-a.入库数量) >b.sumQty  then a.入库数量  WHEN a.sumQty>b.sumQty THEN a.sumQty-b.sumQty  ELSE 0 END AS 入库数量

FROM (SELECT *,(SELECT sum(入库数量) FROM 入库表 WHERE 产品代码=a.产品代码 AND 入库时间<=a.入库时间 ) sumQty  FROM 入库表 AS a)a
left JOIN 
(SELECT *,(SELECT sum([出库数量]) FROM 出库表 WHERE 产品代码=a.产品代码 AND [出库时间]<=a.[出库时间] ) sumQty  FROM 出库表 AS a)b ON a.产品代码=b.产品代码
WHERE   
b.sumQty-b.[出库数量] <a.sumQty   
)T
GROUP BY 
[产品代码],
[产品名称],
[出库时间]

go


--ASP代码访问
select * from view_Storage where (条件表达式)


--参考方法--
这些建表的代码,先单独在sql server中运行:

if not object_id(N'[入库表]') is null 			
			
		
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:18:07
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8216/
本文WWW.DOC100.NET DOC100.NET版权所有。