SqlServer查询 SELECT 赋值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SqlServer查询 SELECT 赋值相关的知识,希望对你有一定的参考价值。
--生成测试数据
CREATE TABLE #TEST
(
FID int primary key identity(1,1),
Fname nvarchar(20),
FDebit money, --借
FLend money, --贷
FBalance money, --余额
FReason nvarchar(500),
FCheckOrder bit
)
INSERT INTO #TEST
SELECT '张三',50,0,50,'出库',0
UNION ALL
SELECT '张三',70,0,120,'出库',1
UNION ALL
SELECT '张三',90,0,210,'出库',1
UNION ALL
SELECT '李四',80,0,80,'出库',0
UNION ALL
SELECT '张三',0,70,140,'对账',1
UNION ALL
SELECT '张三',0,90,50,'对账',1
SELECT * FROM #TEST
/*现要到达以下效果,将客户张三对账的数据冲掉即重新写2笔数据
1 张三 50.00 0.00 50.00 出库 0
2 张三 70.00 0.00 120.00 出库 0
3 张三 90.00 0.00 210.00 出库 0
4 李四 80.00 0.00 80.00 出库 0
5 张三 0.00 70.00 140.00 对账 1
6 张三 0.00 90.00 50.00 对账 1
7 张三 70.00 0.00 120.00 冲红 1
8 张三 90.00 0.00 210.00 冲红 1
*/
--用SELECT插入数据,问题在于余额的计算
--也就是每一行数据的检索应该是动态取得该客户最后一次余额
--但SELECT插入模式下必须要数据检测完才进行插入,
--所以我用自定义函数GetLastBalance()总只能取得未插入前的最后Balance
INSERT INTO #TEST
(
FName,FDebit,FLend,FBalance,FReason,FCheckOrder
)
SELECT FName,FLend,FDebit,FBalance/*GetLastBalance(FName)+FLend*/,'冲红',1
FROM #TEST
WHERE Fname='张三' AND FReason='对账'
--删除临时表
DROP TABLE #TEST
1.要定义好每一种业务是借还是贷,比如出库是贷 入库是借
2.每一笔数据都应该有一条流水记录
3.关于余额的计算,根据上面的业务设置和流水就可以轻松计算出当前余额来
比例
1.入库 100
2.出库 200
3.冲红 300
余额 = 100×1 + 200×-1 + 300*1 = 400
sqlserver 存储过程中变量赋值
sqlserver 存储过程中变量赋值 declare @cc int set @cc=(select count(1) from tablename) 或 select @cc=count(1) from tablename
在下面是用的时候都没有值,例如:
if @cc = 0
这个判断失效,但是当在判断前面加select @cc的时候就可以,不知道为什么,请帮助回答一下,多谢
需要看你具体的代码是什么 第5个回答 2011-08-10 654645
以上是关于SqlServer查询 SELECT 赋值的主要内容,如果未能解决你的问题,请参考以下文章