比方说,我有一个具有以下结构的表格:根据状态选择数据 - 有时必须接受某些状态
ID |日期|名称|状态|属性A |属性B
现在我想从tabel中选择所有行 - 但是,如果有两个来自同一数据并具有相同名称的项目 - 其中一个具有状态CANCLED,那么我只想显示一个没有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
希望这可以让我的意图更清晰一点
刚做了SELECT * FROM tbl WHERE [status] <>'Cancled''?请显示一些示例数据和显示的输出。另外你已经尝试过的任何东西都会很好。 –