我正在使用SQL Server,我有这样的表:
| 身份证|大小|统治|
| - ------|- ------|- ------|
| 1个|大型|利雅得|
| 1个|小|利雅得|
| 第二章|大型|麦加|
| 第二章|培养基|麦加|
| 第二章|小|吉达|
| 三个|培养基|达曼|
我希望查询对每个reake和id只采用一个大小。例如,在id“1”中,我希望删除第二个值(“small”)注意:我不能在表中修改或更改。
结果应该是这样的:
| 身份证|大小|统治|
| - ------|- ------|- ------|
| 1个|大型|利雅得|
| 第二章|大型|麦加|
| 第二章|小|吉达|
| 三个|培养基|达曼|
2条答案
按热度按时间jei2mxaa1#
假设您希望按此顺序对大型、中型和小型进行优先级排序,我们可以尝试使用
ROW_NUMBER
,如下所示:ejk8hzay2#
如果您的数据总是采用这种简单的形式(意味着只有这三种大小),并且if您总是希望选择
large
first if present,elsemedium
first if present和lastsmall
,这可以通过使用MIN
和GROUP BY
以及一个好的ORDER BY
子句来实现:此查询将准确地生成问题中显示的结果。
在此验证:db<>fiddle
如果此逻辑不足以满足您的要求,请编辑您的问题并更详细地解释您需要什么。