假设我有一个具有以下结构的表格:
身份证 | 日期 | 姓名 | 状态 | 属性 A | 属性 B
现在我想从该表中选择所有行 - 但是,如果有两个来自相同数据且具有相同名称的项目 - 其中一个具有状态 CANCEL,那么我只想显示一个没有status=CANCLED
. 但是,如果-在给定日期只有一个具有该名称的项目-那么无论状态如何,我都想选择它。
目前我对解决方案视而不见——我唯一能想到的就是将存储过程与临时表和大量 if/else 语句混合在一起。但是 - 我很确定必须有解决这个问题的方法 - 并且可能是在一个相当简单的查询中。
谢谢!
编辑:示例数据
ID Date Name Status Attribute A Attribute B
----------- ---------- ----------- ---------- ----------- -----------
1 2013-10-17 A Complete AA BB
2 2013-10-17 A Cancled CC DD
3 2013-10-18 A Cancled DD EE
4 2013-10-18 B Complete AA BB
创建表的脚本(根据某些要求):
CREATE TABLE [dbo].[StackoverflowTest](
[ID] [int] NOT NULL,
[Date] [date] NULL,
[Name] [varchar](50) NULL,
[Status] [varchar](10) NULL,
[Attribute A] [nchar](10) NULL,
[Attribute B] [nchar](10) NULL,
)
根据上面的数据 - 我想要返回的行是具有以下 ID 的行:1、3、4
希望这能让我的意图更清楚一点