【发布时间】:2021-10-14 05:56:43
【问题描述】:
我需要标记没有指定 DC 和存储位置组合的 ID#。例如:
每个 DC 的文章必须具有以下组合:
| DC | Storage Location |
|---|---|
| DC01 | ABC, BCA, DCA |
| DC02 | ABC, BCA |
| DC03 | ABC, DCA |
我想要的结果如下,因为我想显示缺少存储位置。
| ID# | DC# | Storage Location | Flag |
|---|---|---|---|
| 1 | DC02 | ABC | Good |
| 1 | DC02 | BCA | Good |
| 2 | DC01 | ABC | Bad |
| 2 | DC01 | BCA | Bad |
错误条目是因为缺少“DCA”条目。到目前为止,我有以下内容,但是我无法弄清楚如何计算每个 ID 的匹配数(即 DC01 必须为 3,以便标志为 Good else Bad)。一旦找到标志,我唯一能想到的就是做一个联合(每个组合一个选择语句) - 有没有更优化的方法来做到这一点?
select
ID,
DC,
Storage_Location
FROM table
where
DC = 'DC01' AND Storage_location in ('ABC', 'BCA', 'DCA')
group by ID, DC, Storage_location
表格包含多个ID,每个ID有不同的组合:
| ID# | DC# | Storage Location |
|---|---|---|
| 1 | DC02 | ABC |
| 1 | DC02 | BCA |
| 2 | DC01 | ABC |
| 2 | DC01 | BCA |
| 3 | DC03 | ABC |
| 3 | DC03 | DCA |
【问题讨论】:
-
我不完全明白你的桌子是什么样子的。您正在使用 ID 显示所需的结果。能不能也显示一下原始表格数据,让我看看你是从哪里来的?
-
@ThorstenKettner 感谢您的回复,我已附上原始表格和一些示例数据
-
用您使用的数据库标记您的问题。
-
表格中是否有所需的位置组合?另外,SQL Server 的版本是多少?
标签: sql sql-server sql-server-2012 ssms