如何解决是否根据条件识别并选择行如果条目首次出现在列中? SQL
我正在使用VBA和ADODB.Connection从Access数据库中提取数据。如果第一次出现在特定列中的条目,我想从数据库中选择数据。最好用示例来说明,所以这是我在Excel中快速制作的一个示例表,让我们假设该表名为“ DrinkTable”
我想提取一个在2020年9月1日之后通过新名称进行的交易(这是该名称第一次购买饮料,名称从未出现在名称栏中2020年9月1日之前)。
我能够编写一条SQL语句,该语句使用"SELECT [Name],[Drink],[Cost],[Date] FROM [DrinkTable] WHERE [Date] >= #"9/1/2020#" ORDER BY [ID] DESC;
拉到2020年9月1日之后的所有条目,但这不能给出我正在尝试的内容。我要寻找的正确输出是:
如果[名称]列中的条目未出现在“ 9/1/2020”之前,有人可以帮助我改进我的SQL语句以仅提取数据吗?
解决方法
您可以使用not exists
过滤掉Name
出现在拆分日期之前的行:
SELECT [Name],[Drink],[Cost],[Date]
FROM [DrinkTable] d
WHERE
[Date] >= #"9/1/2020#"
AND NOT EXISTS (
SELECT 1
FROM [DrinkTable] d1
WERE d1.[Date] < #"9/1/2020#" AND d1.[Name] = d.[Name]
)
ORDER BY [ID] DESC
,
尝试
SELECT d1.[Name],[Date] FROM [DrinkTable] AS d1
LEFT JOIN (SELECT [Name] FROM [DrinkTable] WHERE [Date] < #9/1/2020# ) as d2
ON d1.name = d2.name
WHERE ISNULL(d2.name)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。