Sql server 2008 使用case语句生成佣金

Sql server 2008 使用case语句生成佣金,sql-server-2008,stored-procedures,crystal-reports,Sql Server 2008,Stored Procedures,Crystal Reports,我有一张桌子,上面有一块空地。我需要在ClearPrincipalLOC价值观的基础上产生佣金 如果ClearPrincipalLOC

我有一张桌子,上面有一块空地。我需要在ClearPrincipalLOC价值观的基础上产生佣金

如果ClearPrincipalLOC<25000.99,则佣金=125

如果CLearPrincipalLOC<50000.99,则佣金=150

如果ClearPrincipalLOC<75000.99,则佣金=175

等等

最后,我需要使用crystal reports显示报告,其中所有commission和ClearPrincipalLOC都按AccountNo分组

我的数据库里没有佣金栏。只有ClearPrincipalLOC和AccountNo。纵队

My Stored显示报告的过程如下:

选择AccountNo,SUM(ClearPrincipalLOC)作为PrincipalAmount,SUM(commission)作为commission 来自WU_主表 按帐号分组

请帮助我使用case语句或if-then语句获取佣金值,以便我可以按Accountno对整个佣金进行汇总,并显示在crystal report上

/{@Commmission}
// {@Commmission}
Select {table.ClearPrincipalLOC}
Case Is < 25000.99: 125
Case Is < 50000.99: 150
Case Is < 75000.99: 175
Default: 0
选择{table.ClearPrincipalLOC} 病例<25000.99:125 病例<50000.99:150 病例<75000.99:175 默认值:0
与其将此作为一个
案例
语句,不如使用一个表:

declare @CommissionRanges table (
    LowBound decimal(18,2) not null,
    HighBound decimal(18,2) not null,
    CommissionRate decimal(18,2) not null
)
insert into @CommissionRanges (LowBound,HighBound,CommissionRate) values
(0,25000.99,125),
(25001,50000.99,150),
(50001,75000.99,175)

select AccountNo, SUM(ClearPrincipalLOC)as PrincipalAmount, SUM(cr.CommissionRate) as Commission
from WU_mainTable mt
    inner join
    @CommissionRanges cr
        on
            mt.ClearPrincipalLOC between cr.LowBound and cr.HighBound
group by AccountNo
(未经测试,因为我没有您的表和数据)

此外,我的界限可能有点错误-但感觉奇怪的是,25000.98的
ClearPrincipalLOC
得到一个佣金率,25000.99的一个得到一个不同的佣金率-但你应该能够轻松地调整上述内容


当然,您是选择使用临时表/表变量(如上所述)还是将其设置为永久表取决于您。

帐户无ClearPrincipalLOC佣金

APK1234567 5000000

APK1234567 25000.65

APK1234568 60231.52

现在我需要在ClearPrincipalLOC的基础上产生佣金

然后像这样显示它

会计无本金佣金

APK1234567 500000 150

APK1234567 25000.65 125

APK1234568 60231.52 175


然后,所有数据都将按AccountNo

显示组。更好的方法可能是添加一个带有
下限、上限、commission
的表,您可以对其进行连接,而不是一个长
大小写
表达式。但我没有commission列的值。首先,我需要建立佣金。第一行是
025000.99125
。第二行是
2500150000.99150
。第三行是
5000175000.99175
。明白了吗?对不起,我真的不明白:(这是正确的语法吗?它给了我语法错误。我需要在数据库中创建一列佣金吗?查询在crystal reports formula字段中运行良好,但它不能作为存储过程运行为什么?我的示例是crystal reports的formula语法。您需要将其转换为T/SQL才能在SQL Server中工作。嗯,我们没有任何samp没有数据或预期结果,因此我无法运行查询并调整它,直到它正确为止。让我向您显示我的表结构在您的问题底部有一个
edit
链接。使用该链接更新您的问题,然后删除此答案。@\u Damien \u不信者您有我的表结构吗?您能帮我这样做吗?