如何通过在另一列中填充同名的值来处理一列中的多个重复记录?

How to Handle multiple duplicate records in one column by populating the values in second column with same name?

提问人:SUMANDEEP 提问时间:9/26/2023 更新时间:9/26/2023 访问量:38

问:

在此处输入图像描述

在表中,我有多个记录,例如电影名称 Adalat,并且 3 的类型不同 一个是空的。我想用 3 中首先出现的 Adalat 流派填充空白的地方。 如何做同样的事情?在此处输入图像描述这个查询给了我在这里输入图像描述的结果,这是不正确的?请指导我

T-SQL SQL-SERVER-2008 选择 内部联接

评论

1赞 PeterClemmensen 9/26/2023
欢迎 :-)请不要以图片形式发布数据。请发布我们可以使用的示例数据。使帮助您变得更加容易。

答:

1赞 Alan Schofield 9/26/2023 #1

首先,您需要确定什么是“第一”类型。在这里,我假设是按年份计算的。然后编写子查询来获取此数据。

然后从主表左联接到此子查询,如果流派为 null,则使用子查询中的流派

像这样的东西......

注意:这是未经测试的,因为您没有提供任何可用的数据来使用,因此可能存在语法错误,但它应该为您指明正确的方向。

SELECT 
    m.ID,
    m.[Name],
    m.MovieYear,
    ISNULL(m.Genre, dg.Genre) AS Genre
    FROM MoviesIndia m 
    LEFT JOIN ( -- get genre by name where row number is 1 (default genre)
                SELECT [Name], Genre as DefaultGenre 
                    FROM ( -- get row number for each genre per name
                            SELECT 
                                [Name], Genre, 
                                ROW_NUMBER() OVER (PARTITION BY [NAME] ORDER BY MovieYear) as rn
                                FROM MoviesIndia
                                WHERE Genre IS NOT NULL
                        ) r  WHERE r.rn = 1
              ) dg 
              ON m.[Name] = dg.[Name]

要了解它是如何工作的,请先运行最里面的查询,然后通过自己的方式进行操作,它应该很容易理解。

评论

0赞 Alan Schofield 9/27/2023
别客气。如果这回答了您的问题,请将答案标记为已接受(投票向上/向下按钮下方左侧的复选框)。这有助于其他用户找到类似问题的答案。