首页 > 解决方案 > 如何选择多行,其中一行在列中具有特定值?

问题描述

我有一个数据表,如下所示。当项目的至少一个提交的状态包含 16 时,我需要创建一个显示项目所有提交的 SSRS 报告。

示例数据:

| Project | SubmittalNumber | Description | Status |
|---------|-----------------|-------------|--------|
|53613    |13-1             |Permit       |16A     |
|53613    |13-2             |Survey       |15      |
|53613    |13-3             |Hours        |14      |
|53674    |74-1             |Permit       |15      |
|53674    |74-2             |Survey       |14      |
|1063     |63-1             |Permit       |16      |
|1063     |63-2             |Survey       |13      |

我希望返回的数据:

| Project | SubmittalNumber | Description | Status |
|---------|-----------------|-------------|--------|
|53613    |13-1             |Permit       |16A     |
|53613    |13-2             |Survey       |15      |
|53613    |13-3             |Hours        |14      |
|1063     |63-1             |Permit       |16      |
|1063     |63-2             |Survey       |13      |

我知道使用 Where Status LIKE '16%' 将只返回某些版本为 16 的行,而不是与项目相关的其他行。我还找到了 Exist 的解决方案,但这似乎适用于使用来自 2 个单独表的数据时。我确信解决方案很简单,但我一直无法找到它。有人可以帮忙吗?

标签: sqlreporting-services

解决方案


您可以尝试使用EXISTS子查询LIKE

SELECT *
FROM T t1
WHERE EXISTS (
    SELECT 1
    FROM T tt
    WHERE Status LIKE '16%' AND tt.Project = t1.Project
)
    

推荐阅读