我的数据库出现问题,了解通用交易(如果下注或下注)。目前,这两项都包含在一项交易中。 我还有一个附加字段可以帮助->投注金额,该金额不变。
这是表格的样子:
基本上,您在第一笔交易的“金额”字段中看到的是客户开始的金额。每当下一笔交易的金额高于之前的交易时,则特定的下注也将赢得一个胜利,如果下一个交易的金额低于其唯一下注。
我需要创建一个ETL流程来创建此表:
希望您可以帮助我编写高效的SQL Server代码以创建请求的表。
预先感谢
答案 0 :(得分:0)
在您的OLEDB源代码中将以下脚本用作SQL命令
SELECT TransactionID, DateTime, GameID, CASE WHEN ISNULL(Amount, '') = '' THEN
'StartGame' WHEN Amount > BetAmount THEN 'win' ELSE 'bet' END AS
TransactionTypeID, BetAmount, Amount
FROM [your table name]
答案 1 :(得分:0)
我不确定我是否会尝试纯粹在SSIS中执行此操作,但这是一个查询,应应做正确的事情:
select *,
case
when LAG(Amount, 1, Amount) over (order by TransactionID) = Amount then 'Bet'
else 'Win'
end
from dbo.Transactions;
我正在使用LAG()
函数在上一行的Amount
列的值中回溯一行(其中“上一个”由TransactionID†的顺序定义)。如果该值相同,则将其视为下注,否则即为获胜。
†似乎您想孤立地考虑游戏。如果是这种情况,请将OVER()
函数上的LAG()
子句更改为partition by GameID order by TransactionID
。