我在表中有以下数据(我使用的是 SQL Server 2008R2):
客户代码、设备到期日期、设备名称、日志 ID
S001, NULL, Dvc A, 1
S002, NULL, Dvc B, 2
S002, NULL, Dvc A, 3
S003, 2010-01-01, Dvc A, 4
S004, 2011-06-25, Dvc B, 5
S004, 2012-02-10, Dvc A, 5
日志 ID 列基于运行号。
我想根据以下条件为每个客户代码选择一条记录:
- 如果设备到期日期不为空,则采用最新日期的记录
- 如果所有到期日期均为空,则采用最新记录(最大日志 ID)
因此,选定的记录将是:
Customer Code, Device Expiry Date, Device Name, Log ID
S001, NULL, Dvc A, 1
S002, NULL, Dvc A, 3
S003, 2010-01-01, Dvc A, 4
S004, 2012-02-10, Dvc A, 5
查询的输出将进一步与主客户代码连接:
Customer Code, Member Type
S001, Silver
S002, Gold
S003, Silver
S004, Silver
S005, Gold
加入后,最终结果将是:
Customer Code, Member Type, Device Expiry Date, Device Code
S001, Silver, NULL, Dvc A
S002, Gold, NULL, Dvc A
S003, Silver, 2010-01-01, Dvc A
S004, Silver, 2012-02-10, Dvc A
S005, Gold, NULL, NULL
我想到的是使用几个子查询来获取设备记录。请提供一些关于获得上述结果的想法。先感谢您。