首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在案例确定的字段上区分的重复记录

在案例确定的字段上区分的重复记录
EN

Stack Overflow用户
提问于 2022-06-23 10:57:16
回答 1查看 38关注 0票数 0

我的SP返回一个位列,取决于惠特,参数等于另一个表字段。

代码语言:javascript
复制
SELECT DISTINCT
table.[f1],
table.[f2],
--Many more fields
CASE WHEN table.MyField = @param THEN 1 ELSE 0 END AS col
--Where condition not relevant

所述列位于大型DISTINCT语句中。每当列为true时,它就会被“区分”并复制记录,而我只需要一个: true,如果匹配,否则为false。

它是这样返回的:

代码语言:javascript
复制
f1   f2   flag
FOO  BAR  0
FOO  CAR  0
GOO  BAR  1
GOO  BAR  0

我需要这个:

代码语言:javascript
复制
f1   f2   flag
FOO  BAR  0
FOO  CAR  0
GOO  BAR  1

我尝试在CASE块中使用一个子查询,并将生成的列拉到distinct之外。第一个选项给了我错误的结果集,而第二个选项没有聚合。最后一次尝试,我将所有内容封装在另一个SELECT中,并使用了一个GROUP BY

代码语言:javascript
复制
SELECT * FROM (
SELECT DISTINCT
table.[f1],
table.[f2],
CASE WHEN table.MyField = @param THEN 1 ELSE 0 END AS col
) AS t GROUP BY f1, f2

在玩了一段时间之后,它要么给了我同样的结果,要么在字段上出现了一个要聚合的错误。添加where条件会给出各种错误的结果集。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-23 11:06:36

发布的内容显示了您希望这些字段组合的最大标志值,而不仅仅是不同的行。您可以为此使用GROUP BY

代码语言:javascript
复制
SELECT f1,f2, MAX(IIF(MyField=@param,1,0)) as Flag
FROM Table1
GROUP BY f1,f2

DISTINCTGROUP BY以类似的方式工作,但是DISTINCT适用于所有列值,甚至那些由表达式计算的列值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72729032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档