gpt4 book ai didi

sql - 返回字段具有相同值和附加文本的所有记录

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

表包含特定字段(文件名)的唯一记录。尽管这些记录是唯一的,但实际上它们只是仅附加了一些文本的重复记录。如何返回相似或类似的记录并将其分组并更新空字段?

下表是典型的记录。每条记录都有一个文件名,但它不是关键字段。我想将一条包含元数据的数据库记录填充到只能通过前 n 个字符识别的文档元数据中。

该变量是原始文件名总是在变化的字符长度。不变的是前缀始终相同。

FILENAME     /    DWGNO       /    PROJECT
52349 / 52349 / Ford
52349-1.dwg / /
52349-2.DWG / /
52349-3.dwg / /
52351 / 52351 / Toyota
52351_C01_REV- / /
52351_C01_REV2- / /
123 / 123 / Nissan
123_rev1 / /
123_rev2 / /
123_rev3 / /

表格应如下所示。

FILENAME       /      DWGNO     /     PROJECT
52349 / 52349 / Ford
52349-1.dwg / 52349 / Ford
52349-2.DWG / 52349 / Ford
52349-3.dwg / 52349 / Ford
52351 / 52351 / Toyota
52351_C01_REV- / 52351 / Toyota
52351_C01_REV2-/ 52351 / Toyota
123 / 123 / Nissan
123_rev1 / 123 / Nissan
123_rev2 / 123 / Nissan
123_rev3 / 123 / Nissan

我首先尝试连接表本身并检查长度,但“LEFT(FILENAME, 10)”没有返回所有结果。

USE MyDatabase
SELECT x.DWGNO AS X_DWGNO,
y.DWGNO AS Y_DWGNO,
x.FILENAME AS X_FILENAME
y.FILENAME AS Y_FILENAME
x.DWGTITLE,
x.REV,
x.PROJECT
FROM dbo.DocShare x
-- want all the files from the left table... I think
LEFT JOIN dbo.DocShare y
ON LEFT(FILENAME LEN(CHARINDEX('.', FILENAME 1))) = LEFT(FILENAME, 10)

还根据类似的帖子尝试了其他方法,但也不起作用。

USE MyDatabase
SELECT X.E_DWGNO,
y.DWGNO AS Y_DWGNO,
x.FILENAME AS X_FILENAME
y.FILENAME AS Y_FILENAME
x.DWGTITLE,
x.REV,
x.PROJECT
FROM dbo.DocShare x
WHERE EXISTS(SELECT x.FILENAME
FROM dbo.DocShare
WHERE x.FILENAME = LEFT(y.FILENAME LEN(CHARINDEX('.', y.FILENAME, 0))))
ORDER BY y.FILENAME

最佳答案

试试这个

Sql Fiddle

select f2.Filename,f1.DWGNO,f1.Project
from File1 f2 left join File1 f1 on
f2.Filename like f1.Filename+'%'
where f1.DWGNO != ''

关于sql - 返回字段具有相同值和附加文本的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30995401/

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