22,294
社区成员
发帖
与我相关
我的任务
分享select CreateUserID,SUM(Bonus) from
(
SELECT MM ,
DD,
CreateUserID,
SellPrice,
dbo.GetBonus(SUM(SellPrice)) AS Bonus
FROM ( SELECT MONTH(UpdateTime) AS MM ,
DAY(PayTime) AS DD ,
CreateUserID,
SUM(SellPrice) AS SellPrice
FROM Jc_Article
where PayClass>0
GROUP BY MONTH(UpdateTime) ,
DAY(PayTime),
CreateUserID
) AS t
GROUP BY MM ,
DD,
SellPrice,
CreateUserID
) as c
group by CreateUserID
奖励函数:
ALTER FUNCTION [dbo].[GetBonus]
(
@SellPrice decimal(11,4)
)
RETURNS decimal(11,4)
AS
BEGIN
IF @SellPrice >=1500 AND @SellPrice <2000
BEGIN
RETURN 20
END
IF @SellPrice >=2000 AND @SellPrice <3000
BEGIN
RETURN 50
END
IF @SellPrice >=3000 AND @SellPrice <4000
BEGIN
RETURN 80
END
IF @SellPrice >=4000 AND @SellPrice <5000
BEGIN
RETURN 150
END
RETURN 0
END
SELECT ISNULL(MM,'小计') AS MM ,
ISNULL(DD,'') AS DD,
SUM(CASE WHEN SellPrice >= 1000
AND t.SellPrice < 2000 THEN 20
WHEN SellPrice >= 2000
AND t.SellPrice < 5000 THEN 50
WHEN SellPrice >= 5000 THEN 100
ELSE 0
END) AS SellPrice
FROM ( SELECT CONVERT(VARCHAR(7), SellTime, 120) AS MM ,
CONVERT(VARCHAR(10), SellTime, 120) AS DD ,
SUM(SellPrice) AS SellPrice
FROM TabName
GROUP BY CONVERT(VARCHAR(7), SellTime, 120) ,
CONVERT(VARCHAR(10), SellTime, 120)
) AS t
GROUP BY MM ,
DD
WITH ROLLUP
HAVING GROUPING(MM) = 1
OR GROUPING(DD) = 0