Sql 如何联接一个表并基于最新日期和其他两列中的条件显示一列?
我正在尝试在customerID上连接两个表。我有一个客户信息表和一个购买信息表。在关联表中,我希望有一列显示该客户的最新购买信息。但是,有些客户还没有购买……我希望他们的字段保持空白或空。此外,我只想显示A类采购,而不是B类采购 我找到了一个显示最新记录的解决方案,但如果客户没有记录,我无法使其显示null(它只是将该客户从联接表中完全删除,而不是保留null字段…无论联接类型如何):Sql 如何联接一个表并基于最新日期和其他两列中的条件显示一列?,sql,sql-server,join,Sql,Sql Server,Join,我正在尝试在customerID上连接两个表。我有一个客户信息表和一个购买信息表。在关联表中,我希望有一列显示该客户的最新购买信息。但是,有些客户还没有购买……我希望他们的字段保持空白或空。此外,我只想显示A类采购,而不是B类采购 我找到了一个显示最新记录的解决方案,但如果客户没有记录,我无法使其显示null(它只是将该客户从联接表中完全删除,而不是保留null字段…无论联接类型如何): 选择c.*,p1* 来自客户c 在(c.id=p1.customer\U id)上加入采购p1 左侧外部连接
选择c.*,p1*
来自客户c
在(c.id=p1.customer\U id)上加入采购p1
左侧外部连接购买p2开启(c.id=p2.customer_id和
(p1.date
假设我的字段是:
customerTable:客户ID、客户名称
purchaseTable:客户ID、采购类型(A或B)、采购价格、采购备注
我希望我的联接表显示:
客户ID、客户名称、购买价格(最近)、购买说明(最近)
对于“我的客户”表中的每个客户,即使他们尚未购买,我只希望为a类购买显示purchasePrice和purchaseNotes,否则该字段保留为空。使用窗口功能或
应用
。后者:
SELECT c.*, p.*
FROM customer c OUTER APPLY
(SELECT TOP (1) p.*
FROM purchase p
WHERE p.customer_id = c.id and p.type = 'A'
ORDER BY date DESC
) p;
SELECT c.*, p.*
FROM customer c OUTER APPLY
(SELECT TOP (1) p.*
FROM purchase p
WHERE p.customer_id = c.id and p.type = 'A'
ORDER BY date DESC
) p;