locheck
#programowanie #sql #sql #programista15k

jak zrobic JOIN i zastosowac SUBSTRING zeby tylko porownal recordy gdzie assignmentNumber i employeeNumber w obu tabelach moga miec max 11 characters ale ja tylko potrzebuje piersze 8 cyfr

SELECT *
FROM ADStarterLeaverDetails AD
JOIN ADExtractedData EXTR
ON AD.employeeNumber = EXTR.assignmentNumber
JOIN AUTHN
Account ACC
ON EXTR.assignmentNumber = ACC.[User]
  • Najlepsze
  • Wszystkie komentarze
Darjo
Darjo
3
@locheck: to jakas jednorazowa akcja czy staly mechanizm? Jak staly to sugeruje jednak zrobic kolumne z oczyszczonymi danymi, bo join po funkcji to wydajny raczej nie bedzie...
nilhir
@locheck: tak jak pisze @Darjo - jeżeli to ma być ciągle używane to nie polecam tego rozwiązania ale jak chcesz jednorazowo coś znaleźć to potraktuj te wartości funkcją left()
MQs
MQs
0
@locheck: Tnij tą gwiazdkę
locheck
locheck Autor
0
@Darjo: @nilhir uruchamiane codziennie jako job o stalej porze. tylko do wylapania niezgodnosci pomiedzy recordami
Darjo
Darjo
0
Nie wiem jak mssql, ale jesli nie pozwala na funkcje w join to zawsze mozna zrobic iloczyn kartezjanski tabel przecinkiem i joinowac je warunkiem w where, tam na pewno da sue uzyc dunkcji
ja_tu_czytam
@locheck nie wiem jak duże będą te tabele ale możesz zrobić sobie 2 cte i potem joinować cte w tym jobie np.

with cte1 as
(
SELECT *,LEFT(AD.employeeNumber,8) as col
FROM ADStarterLeaverDetails