【发布时间】:2020-01-03 19:42:40
【问题描述】:
数据表
CREATE TABLE [dbo].[Data](
[RecordNumber] [int] NULL,
[Data1] [nvarchar](10) NULL,
[Data2] [nvarchar](10) NULL
) ON [PRIMARY]
审批表
CREATE TABLE [dbo].[Approval](
[RecordNumber] [int] NOT NULL,
[ApprovedByLevel] [int] NOT NULL,
[ApprovedByName] [nvarchar](50) NOT NULL
) ON [PRIMARY]
在批准表中,我存储了记录号和批准记录的人。
许多人批准了同一条记录,最后我想通过结合数据表只显示最后批准人级别和姓名。
期待查询结果
使用 Ms-SQL Server 2014
更新
在这
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=d1c10b03c62b282d096a1f7d7dbfca4b
我想得到结果为
【问题讨论】:
-
您能解释一下为什么您希望这 2 行出现在预期结果中吗?
-
在审批表中存储了记录号和审批人。许多人批准了同一条记录,最后我想通过结合数据表只显示最后批准人级别和姓名。
-
Last 是否与最大 ApprovedByLevel 相同?
-
试试这个
select * from approval as da inner join data as dd on da.record_number = dd.record_number order by da.approved_by_level DESC或作为你的脚本SELECT * FOM [dbo].[approval] as da inner join [dbo].[data] as dd on da.[RecordNumber] = dd.[RecordNumber] order by da.[ApprovedBylevel] DESC -
它让所有记录重复到 5 行。由于批准表有 5 个条目。但我只想得到 2 行结果。由于数据表仅包含 2 行数据。
标签: sql sql-server