Una tabella contiene record univoci per un campo specifico (FILENAME). Sebbene i record siano unici, in realtà sono solo duplicati con solo un testo aggiunto. Come puoi restituire e raggruppare record simili o simili e aggiornare i campi vuoti?Restituisce tutti i record in cui un campo ha lo stesso valore più testo aggiuntivo
La tabella seguente è tipica dei record. Ogni record ha un nome di file ma non è un campo chiave. C'è un record del database con i metadati che vorrei popolare per documentare i metadati che sono identificabili solo dai primi n caratteri.
La variabile è il nome del file originale sta cambiando sempre le lunghezze dei caratteri. La costante è che il prefisso è sempre lo stesso.
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 / /
La tabella dovrebbe apparire così.
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
ho cercato di unire la tabella su se stessa e verificare la lunghezza ma "sinistra (nome file, 10)" non restituisce tutti i risultati.
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)
Anche provato qualcos'altro in base a un post simile, ma in realtà non funziona neanche.
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
il problema principale è quello di trovare il primo carattere non numerico nella colonna FILENAME .... – CeOnSql
usando 'LIKE' per il confronto nome del file è pericoloso, se si dispone di file di 52349 e 5234 – Eric