【发布时间】:2018-03-20 08:34:19
【问题描述】:
我需要选择并合并按活动分数排序的记录。我有一个适用于所有有分数的记录的解决方案。现在我需要用没有分数且数据为空的记录填充选择。 以下语句适用于有分数且需要扩展的记录:
SELECT
Name, Activityscore
FROM
(SELECT
TOP 2084 * FROM [Table]
WHERE Email like '%@test%' AND Activityscore in ( 1, 2, 3, 4)
order by Activityscore desc ) t1
UNION
SELECT
Name, Activityscore
SELECT
Name, Activityscore
FROM
(SELECT
TOP 2084 * FROM [Table]
WHERE Email like '%@test%' AND Activityscore in ( 1, 2, 3, 4) OR Email like '%@test%' AND Activityscore is NULL
order by Activityscore desc ) t1
UNION
SELECT
Name, Activityscore
FROM
(SELECT
TOP 14000 * FROM [Table]
WHERE Email NOT like '%@test%' AND Email NOT like '%@test2%' AND Activityscore in ( 1, 2, 3, 4) OR Email NOT like '%@test%' AND Email NOT like '%@test2%' AND Activityscore is NULL
order by Activityscore desc ) t2
FROM
(SELECT
TOP 14000 * FROM [Table]
WHERE Email NOT like '%@test%' AND Email NOT like '%@test2%' AND Activityscore in ( 1, 2, 3, 4)
order by Activityscore desc ) t2
编辑:
我们有一个包含用户的列表。他们中的一些人有分数,有些人没有。目标是首先选择所有得分从 4 到 3 到 2 到 1 的人。此函数与示例 sn-p 一起使用。现在我需要用没有分配任何分数的记录来填充这些记录。例如:我有一个包含 10.000 条记录的表。 5.000 有分数 (1-4),5.000 没有。现在我需要选择 8.000,因此该语句需要首先选择所有 5.000 的分数,然后随机选择其余的(3.000)没有分数。希望清除用例。
以下似乎带来了预期的结果:
【问题讨论】:
-
标记您正在使用的 dbms。该查询是特定于产品的。
-
这里的示例数据有很长的路要走。
-
嗨,蒂姆,你到底是什么意思?
-
他的意思是添加一些示例数据,以便我们可以看到您的数据是什么样的以及您希望它是什么样的,以便可以测试和验证任何解决方案。
-
能否请您发布一些示例数据和预期结果
标签: sql sql-server-2005