【发布时间】:2011-07-11 20:02:07
【问题描述】:
我有一个表格,其中包含如下数据:
ID Mfgr Primary_Mfgr a1 极致 P a1 Bcme S a1 Ccme S b1 极致 b1 Bcme c1 Acme S c1 Bcme d1 极致 d1 Bcme我需要创建一个 select 语句,它将根据 ID 返回带有 P 作为 Primary_Mfgr 的记录,如果没有 P 记录,则返回空白记录,如果不存在则返回第一个 S记录。在所有情况下,如果有重复,则返回第一个结果。
因此,使用上述数据,我希望从四个不同的查询中返回以下内容:
查询 a1:
a1 极致 P查询 b1:
b1 极致查询 c1:
c1 Bcme查询 d1:
d1 极致在每种情况下,我只需要返回一条记录。我不确定我将如何构建来做到这一点。例如,我可以轻松地取回所有“a1”记录,但我不确定如何编写一个可以获取 ID 参数并在所有情况下仍返回正确的单个记录的查询。我正在使用 SQL Server 2008 R2。
【问题讨论】:
-
您需要定义“第一”。 SQL 没有表内的顺序感。您的查询定义了排序。
-
我并不特别关心他们返回的顺序。如果有两个“S”,只需给我首先从服务器返回的那个。如果有重复的类型,订单对我的需求变得不重要。
标签: sql sql-server tsql sql-server-2008-r2