gpt4 book ai didi

sql-server - 连接设计不良的 SQL 表?

转载 作者:行者123 更新时间:2023-12-03 02:20:10 27 4
gpt4 key购买 nike

我尝试搜索有关在没有外键的情况下连接表的信息,但似乎答案始终是创建外键。我无法修改相关表格来执行此操作,并且我必须报告已在生产中的数据。以下是所涉及表中的部分数据,以举例说明该问题。

Table A
Journal Account Debit Credit Sequence
--------------------------------------------------
87041 150-00 100.00 0.00 16384
87041 150-10 0.00 100.00 32768
87041 150-00 50.0 0.0 49152
87041 210-90 0.0 50.0 65536

然后,第二个表(跟踪附加信息位)基本相同,但缺少将行项目正确连接在一起的序列号。它有自己的不相关的序列号。

Table B
Journal Account Label Artist Sequence
--------------------------------------------------
87041 150-00 Label02 Artist12 1
87041 150-10 Label09 Artist03 2
87041 150-00 Label04 Artist01 3
87041 210-90 Label01 Artist05 4

目前我能想到的最好办法是加入日记帐和帐户,但这会重复记录。我已经通过对序列号进行分组和 max() 进行了尝试,但结果是,对于具有大量行的日记条目,并非所有重复项都会被删除,并且第二个表中的第一个匹配项始终显示为具有相同帐户的线路。

Closest - but bad - result
Journal Account Debit Credit Sequence Label Artist
----------------------------------------------------------------------
87041 150-00 100.00 0.00 16384 Label02 Artist12
87041 150-10 0.00 100.00 32768 Label09 Artist03
87041 150-00 50.0 0.0 49152 Label02 Artist12 <-- wrong
87041 210-90 0.0 50.0 65536 Label01 Artist05

如何连接表格以排除重复项并显示正确的标签和艺术家?感觉就像我必须生成一个查询,该查询知道当表 A 中的 49152 条记录寻找匹配项时,表 B 中的其中一条记录已被使用。

编辑:

@Justin Crabtree A.Sequence 将是输入行项目的顺序。因此,用户可以先输入示例中的最后一行,然后输入第一行,然后输入第三行,最后输入第二行。

@Edper Microsoft SQL Server...嗯,今天早上我无法远程访问客户端的计算机...否则我会提供版本。

@Abe Miessler 是的,你是对的。

一旦我能回到服务器,我就会尝试你的建议@pkuderov

最佳答案

尝试this

;WITH a AS
(
SELECT Journal,
Account,
Debit,
Credit,
Sequence,
Id = ROW_NUMBER() OVER(PARTITION BY Journal ORDER BY Sequence)
FROM dbo.tablea
)
, b AS
(
SELECT Journal,
Account,
Label,
Artist,
Id = ROW_NUMBER() OVER(PARTITION BY Journal ORDER BY Sequence)
FROM dbo.tableb
)

SELECT a.Journal,
a.Account,
a.Debit,
a.Credit,
a.Sequence,
b.Label,
b.Artist
FROM a
JOIN b ON b.Journal = a.Journal
AND b.Account = a.Account
AND b.Id = a.Id

关于sql-server - 连接设计不良的 SQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17374839/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com