Cautare numere lipsa in coloana

Configurare noua (How To)

Situatie

Avem nevoie uneori sa gasim valorile lipsa (sau plaja de valori lipsa dintr-o coloana de tip integer)

Pt aceasta situatie am creat un script care parcurge o coloana de tip INTEGER si intoarce valorile lipsa din aceasta coloana , mai exact intoarce, pt fiecare serie de numere lipsa, numarul de start  al seriei lipsa, numarul de sfarsit al seriei lipsa si lungimea seriei care lipseste.

In scriptul de mai jos trebuie doar sa inlocuiti NUMELE TABELEI si NUMELE COLOANEI din tabela respectiva.

Cele doua locuri in care se fac inlocuirile sunt marcate cu comentarii pt a fi vizibile.

Solutie

WITH TABELA AS
(
SELECT
COLOANA1 AS ID, — AICI se pune NUMELE COLOANEI
RowNum = ROW_NUMBER() OVER (ORDER BY COLOANA1)
FROM
TABELA_X1 — AICI se pune NUMELE TABELEI
),
RANG AS
(
SELECT
*,
DENSE_RANK() OVER (ORDER BY ID – RowNum) As SERIA1
FROM TABELA
),
GASITE AS
(
SELECT
*,
COUNT(*) OVER (PARTITION BY SERIA1) AS SERIA2
FROM RANG
),
LIPSA AS
(
SELECT
MinID = MIN(ID),
MaxID = MAX(ID),
SERIA1
FROM
GASITE
GROUP BY SERIA1
)

SELECT
InceputGap = (a.MaxID + 1),
SfarsitGap = (b.MinID – 1),
NrLipsa = ((b.MinID – 1) – a.MaxID)
FROM
LIPSA a
INNER JOIN
LIPSA b ON a.SERIA1 + 1 = b.SERIA1
ORDER BY
InceputGap

Tip solutie

Permanent

Voteaza

(25 din 57 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?