【发布时间】:2017-03-23 03:26:27
【问题描述】:
我有 2 张桌子;
表序号
snID SerialNR Unit Version
1 123 A A1
2 456 A A2
餐桌交付
dID SerialNR Team
1 456 US
2 456 GE
3 456 FI
结果
snID SerialNR Unit Version Team
1 123 A A1
2 456 A A2 FI
我需要根据TableSN and SerialNR 获取表格,列出给出版本的位置。在同一张表中,我需要为 Team-column 显示最新输入的 data (= MAX(dID))。当有可用的团队数据时,我可以让表格正确显示。
我的查询是这样的
SELECT TableSN.snID, TableSN.SerialNR, TableSN.Unit, TableSN.Version, TableDelivery.Team
FROM TableSN
LEFT OUTER JOIN TableDelivery ON TableDelivery. SerialNR = TableSN. SerialNR
LEFT OUTER JOIN (
SELECT SerialNR, MAX(dID) AS snRank
FROM TableDelivery AS TableDelivery _1
GROUP BY SerialNR
) AS NewTeam ON TableDelivery. SerialNR = NewTeam. SerialNR AND TableDelivery.dID = NewTeam.snRank
WHERE (TableSN.Version = @Version)
如何在没有可用团队的情况下显示SerialNR?
感谢您的指导和支持。
这是需要的:
[
【问题讨论】:
-
能否请您提及有一些记录的表格。
-
TableSN.SerialNR 应该始终可见,只要 TableSN.Version = @Version 为真 - 因为 TableSN 是您的第一个表,而其他表是左连接的 - 据我所知跨度>
-
实际上使用“LEFT”加入它需要所有 TableDelivery 数据可见。使用“RIGHT”连接,它会正确显示,但如果 TableDelivery 中没有 SerialNR 的数据,它会忽略。 “RIGHT”加入是我需要的,但我还需要在 TableDelivery 中没有团队信息的加入。
-
鉴于我在下面的回答,请检查一次@makelei
标签: sql sql-server join sql-server-2005 max