【问题标题】:SQL SSRS updating row based on another rowSQL SSRS 基于另一行更新行
【发布时间】:2016-02-29 16:17:59
【问题描述】:

我搜索了一个问题,但我认为我没有使用正确的搜索关键字。希望有人帮忙,

我有一张这样的桌子,

Name        YEAR
Chicken     2015
Cow         2012
Lion        2014
Lion        **2016**
Tiger       2013
Tiger       2014
Tiger       **2016**

结果

Name        YEAR
Chicken     2015
Cow         2012

我希望将所有对应的名称设置为“NULL”,或者最好在 YEAR 为 2016 时删除行。因此删除了 2 行 Lion 和 3 行 Tiger,因为其中一个的 YEAR = 2016。

谢谢!

【问题讨论】:

    标签: sql reporting-services ssrs-2008-r2


    【解决方案1】:

    您可以使用子查询来做到这一点。您不想看到与年份为 2016 的名称有任何关系,因此您只需将此逻辑写入您的 where 子句。

    SELECT Name, Year
    FROM table
    WHERE Name not in (
        SELECT Name
        FROM table
        WHERE Year = '2016')
    

    对于您的加入情况:

    SELECT Name, Year
    FROM name_table nt
    JOIN year_table yt on yt.id = nt.id
    WHERE Name not in (
        SELECT Name
        FROM name_table nt
        JOIN year_table yt on yt.id = nt.id
        WHERE Year = '2016')
    

    【讨论】:

    • 那不还是只删除 YEAR 2016 的一行吗?我认为问题是我的加入阻止了这种逻辑的工作。我应该早点提到这一点。上面的列来自 2 个不同的表,其中我有一个 ID 的内部联接
    • 带有年份的表格中都有什么?是否只是 ID 和年份,每一行都有不同的 ID?
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多