Sql 建立记分牌-需要将两个不同推荐的值合并为一个总值
我正在制作一个简单的记分牌。它基本上是公司中每个引进外部用户的员工的汇总列表(“推荐”)。该列表只需根据推荐信的最后3个字母(=员工姓名首字母)进行分组即可。但是,其中一名员工使用两个不同的推荐,我需要选择这两个推荐并将其相加为一个总和(这样我就可以使用该值在记分板上进行排序) 正常转介如下所示:“%\u abc”。该员工有两个推荐人:“%\u xyz”和“RE%” 这是当前代码:Sql 建立记分牌-需要将两个不同推荐的值合并为一个总值,sql,Sql,我正在制作一个简单的记分牌。它基本上是公司中每个引进外部用户的员工的汇总列表(“推荐”)。该列表只需根据推荐信的最后3个字母(=员工姓名首字母)进行分组即可。但是,其中一名员工使用两个不同的推荐,我需要选择这两个推荐并将其相加为一个总和(这样我就可以使用该值在记分板上进行排序) 正常转介如下所示:“%\u abc”。该员工有两个推荐人:“%\u xyz”和“RE%” 这是当前代码: SELECT RIGHT(Referral, 3) [Referral], COUNT(*) [Total
SELECT
RIGHT(Referral, 3) [Referral], COUNT(*) [Total]
FROM TableName
WHERE
CAST(Created AS DATE) = CAST(DATEADD(DAY, -1, GETDATE()) AS DATE)
AND
(
Referral LIKE '%_abc'
OR
Referral LIKE '%_xyz'
...
)
GROUP BY RIGHT(Referral, 3)
ORDER BY [Total] DESC
我用下面的代码解决了我的问题。欢迎提供任何优化建议
SELECT Referral, SUM(Total) AS Total FROM
(
SELECT RIGHT(Referral, 3) [Referral], COUNT(*) [Total]
FROM TableName
WHERE
CAST(Created AS DATE) = CAST(GETDATE() AS DATE)
AND
(
Referral LIKE '%_abc'
OR
Referral LIKE '%_xyz'
...
)
GROUP BY RIGHT(Referral, 3)
UNION ALL
SELECT 'xyz' AS Referral, COUNT(*) [Total]
FROM TableName
WHERE
CAST(Created AS DATE) = CAST(GETDATE() AS DATE)
AND
LEFT(Referral, 2) = 'RE'
) t
GROUP BY t.Referral
ORDER BY Total DESC