【发布时间】:2021-02-09 06:15:59
【问题描述】:
我有一个表,其中包含 ID、A1、C1、C2...C20、Country、State、Name 和其他 10 列类似于 country、state、name 的列(A1 是我的主键)
我现有的表是这样的
ID A1 C1 C2 C3 C4 Country State Pet Name
1 25 1 1 0 1 USA Texas Tucker
1 26 1 0 0 0 USA California Drum
2 27 0 1 1 0 Canada BC Golden
2 28 0 0 0 1 USA Ohio Charlie
3 29 1 1 0 0 Mexico Tabasco Chelsea
我如何实现这一目标
ID A1 C1 C2 C3 C4 Country State Pet Name
1 25 1 1 0 1 USA Texas Tucker
2 27 0 1 1 1 Canada BC Golden
3 29 1 1 0 0 Mexico Tabasco Chelsea
我想按 ID 分组,如果有 1 记录在任何时候我希望将其更新为 1,并且我不希望具有不同 A1 的相同 ID 的重复信息的行。如果有一个像 3 这样只有一个 A1 的 ID,我不希望它有任何更改。一旦我得到这个,id 可以成为我的主键,但我希望我可以保留其他列的信息,例如第一次记录的 A1 对应的国家、州、名称(如输出表所示)。
请告诉我如何完成这项工作,谢谢
【问题讨论】:
-
到目前为止你尝试过什么?为什么它不起作用?为什么要使用
UNION ALL、JOIN和GROUP BY,或者与它们有什么关系?你只有一张桌子,那你找JOIN和UNION ALL干什么? -
我不确定是否可以为此使用 group by 或 Union-all,所以我将其添加为标签。我正在尝试使用案例语句按 ID 分组,但我并没有取得太大的成功。我希望将两行与 ID 连接起来,并在其一对一的位置更新列,并使其余列保持不变
标签: sql sql-server group-by max greatest-n-per-group