【发布时间】:2013-08-04 06:31:35
【问题描述】:
我有一个存储过程,它返回一个指定 ID 缺失的项目表。例如:exec getMissingItems '1' 将返回 ID = 1 缺少的项目列表,例如:'A', 'B', 'C'。现在我正在跟踪这些项目何时收到,因此它们以'A Received' 和B received 等形式存储到数据库中。我希望能够只显示尚未收到的项目,例如如果我现在调用exec getMissingItems '1',它只会返回'C'。
所有信息都存储在数据库表中
TABLE1
ID | Event
1 | A Missing
1 | B Missing
1 | C Missing
1 | A Received
1 | B Received
所以目前 getMissingItems 只是简单地调用:
SELECT Event FROM TABLE1 WHERE Event LIKE '%Missing'
返回丢失项目的表格,但即使它们丢失仍然返回它们
RETURNED TABLE
Event
A Missing
B Missing
C Missing
【问题讨论】:
-
您可以编辑您的问题并添加一些架构信息吗?甚至可以在sqlfiddle 上进行概念验证?
-
在描述架构设计时需要更加具体。乍一看,似乎一个简单的连接就足够了。
-
它是作为一个表返回还是一个字符串'A','B','C'
-
对不起,我编辑了代码,希望现在已经足够清楚了。
-
您将两个信息放在一列中。这打破了第一范式。值 'A missing' 应该是单独列中的两个值,例如 Item=A 和 EventType=missing。
标签: sql sql-server sql-server-2008 tsql select