Es ist in Ordnung, ein gemeinsames Format zu haben, ich habe meins, ich und mein Team verwenden das gleiche Format beim Schreiben von SQL.Gibt es eine Möglichkeit, zu verhindern, dass SQL Server meine Ansichtsabfrage automatisch formatiert?
Jetzt ist hier das Problem: Wir verwenden SQL Server. Ich schrieb eine lange Sicht, um mich daran zu erinnern, was ich tat, öffnete ich das "Design" dieser Ansicht. Und mir ist aufgefallen, dass SQL Server mein Format völlig durcheinander gebracht hat und es selbst angewendet hat. Noch schlimmer, dupliziere einfache Bedingungen und mache sie länger ohne Grund (vielleicht urteile ich ein bisschen zu schnell ... aber ...)
Hier ist mein Beispiel, tut mir leid, es ist eine sehr lange Bedingung, Sie don ‚t, es zu lesen, nur das Format fest:
WHERE (STATUT_CAND IN (2, 3))
AND
(DATE_DISPO < GETDATE() OR DATE_DISPO IS NULL)
AND
((SELECT COUNT(ID_CAND) AS Expr1
FROM Paie.dbo.PAI_CAND_RESULT_ENTREVUE AS pcre
WHERE (ID_CAND = PC.ID_CAND)) > 0)
AND
((SELECT COUNT(MATR) AS Expr1
FROM Paie.dbo.PAI_DOS_EMPL AS PAI_DOS_EMPL_1
WHERE (MATR = PC.MATR) AND (ETAT = 'C14' OR
ETAT = 'C15' OR
ETAT = 'E1') OR
(MATR = PC.MATR) AND (ETAT LIKE 'A%' OR
ETAT LIKE 'P%' OR
ETAT LIKE 'S%') AND (STAT_ENG = 'E1' OR
STAT_ENG = 'P1' OR
STAT_ENG = 'G1')) <= 0)
AND
(NOT EXISTS
(SELECT ID_CAND
FROM Paie.dbo.PAI_CAND_EMPL AS PAI_CAND_EMPL_1
WHERE (ID_CAND = PC.ID_CAND) AND (MOTIF_EXCLUS IS NOT NULL) AND (MOTIF_EXCLUS NOT IN ('0'))))
AND (NOT EXISTS
(SELECT MOT_ABS
FROM Paie.dbo.PAI_DOS_PMNT_ABS AS PAI_DOS_PMNT_ABS_1
WHERE (MATR = PC.MATR) AND (MOT_ABS = '15' OR
MOT_ABS = '16' OR
MOT_ABS = '40' OR
MOT_ABS = '41' OR
MOT_ABS = '45' OR
MOT_ABS = '46' OR
MOT_ABS >= '52' AND MOT_ABS <= '57') OR
(MATR = PC.MATR) AND (MOT_ABS = '01') AND (CODE_PMNT >= 103522 AND CODE_PMNT <= 103541 OR
CODE_PMNT = 103572 OR
CODE_PMNT = 103573 OR
CODE_PMNT = 103577)))
AND (NOT EXISTS
(SELECT STAT_ENG
FROM Paie.dbo.PAI_DOS_EMPL AS pados
WHERE (MATR = PC.MATR) AND (DATE_EFF > GETDATE())))
AND (NOT EXISTS
(SELECT MOTIF_AFF
FROM Paie.dbo.GRH_POSTE_AFFECT AS pados
WHERE (PC.MATR = MATR) AND (MOTIF_AFF LIKE '%S%') AND (DATE_EFF =
(SELECT MAX(DATE_EFF) AS Expr1
FROM Paie.dbo.GRH_POSTE_AFFECT AS aff
WHERE (MATR = PC.MATR)))))
AND (EXISTS
(SELECT MATR
FROM Paie.dbo.PAI_HCHQ_PMNT AS dosem
WHERE (MATR = PC.MATR) AND (DATE_FIN > DATEADD (year , -3 , GETDATE()))) or (select DATE_DERN_PAIE from paie.dbo.PAI_DOS where MATR = PC.MATR) > DATEADD (year , -3 , GETDATE()) or (select DATE_DERN_PAIE from paie.dbo.PAI_DOS where MATR = PC.MATR) is null)
auf diese Weise, ich weiß, wo die MAIN AND
sind, jetzt, wenn ich diese in die Ansicht setzen, das ist, wie SQL Server-Format es:
WHERE (STATUT_CAND IN (2, 3)) AND (DATE_DISPO < GETDATE() OR
DATE_DISPO IS NULL) AND
((SELECT COUNT(ID_CAND) AS Expr1
FROM Paie.dbo.PAI_CAND_RESULT_ENTREVUE AS pcre
WHERE (ID_CAND = PC.ID_CAND)) > 0) AND
((SELECT COUNT(MATR) AS Expr1
FROM Paie.dbo.PAI_DOS_EMPL AS PAI_DOS_EMPL_1
WHERE (MATR = PC.MATR) AND (ETAT = 'C14' OR
ETAT = 'C15' OR
ETAT = 'E1') OR
(MATR = PC.MATR) AND (ETAT LIKE 'A%' OR
ETAT LIKE 'P%' OR
ETAT LIKE 'S%') AND (STAT_ENG = 'E1' OR
STAT_ENG = 'P1' OR
STAT_ENG = 'G1')) <= 0) AND (NOT EXISTS
(SELECT ID_CAND
FROM Paie.dbo.PAI_CAND_EMPL AS PAI_CAND_EMPL_1
WHERE (ID_CAND = PC.ID_CAND) AND (MOTIF_EXCLUS IS NOT NULL) AND (MOTIF_EXCLUS NOT IN ('0')))) AND (NOT EXISTS
(SELECT MOT_ABS
FROM Paie.dbo.PAI_DOS_PMNT_ABS AS PAI_DOS_PMNT_ABS_1
WHERE (MATR = PC.MATR) AND (MOT_ABS = '15' OR
MOT_ABS = '16' OR
MOT_ABS = '40' OR
MOT_ABS = '41' OR
MOT_ABS = '45' OR
MOT_ABS = '46' OR
MOT_ABS >= '52' AND MOT_ABS <= '57') OR
(MATR = PC.MATR) AND (MOT_ABS = '01') AND (CODE_PMNT >= 103522 AND CODE_PMNT <= 103541 OR
CODE_PMNT = 103572 OR
CODE_PMNT = 103573 OR
CODE_PMNT = 103577))) AND (NOT EXISTS
(SELECT STAT_ENG
FROM Paie.dbo.PAI_DOS_EMPL AS pados
WHERE (MATR = PC.MATR) AND (DATE_EFF > GETDATE()))) AND (NOT EXISTS
(SELECT MOTIF_AFF
FROM Paie.dbo.GRH_POSTE_AFFECT AS pados
WHERE (PC.MATR = MATR) AND (MOTIF_AFF LIKE '%S%') AND (DATE_EFF =
(SELECT MAX(DATE_EFF) AS Expr1
FROM Paie.dbo.GRH_POSTE_AFFECT AS aff
WHERE (MATR = PC.MATR))))) AND EXISTS
(SELECT MATR
FROM Paie.dbo.PAI_HCHQ_PMNT AS dosem
WHERE (MATR = PC.MATR) AND (DATE_FIN > DATEADD(year, - 3, GETDATE()))) OR
(STATUT_CAND IN (2, 3)) AND (DATE_DISPO < GETDATE() OR
DATE_DISPO IS NULL) AND
((SELECT COUNT(ID_CAND) AS Expr1
FROM Paie.dbo.PAI_CAND_RESULT_ENTREVUE AS pcre
WHERE (ID_CAND = PC.ID_CAND)) > 0) AND
((SELECT COUNT(MATR) AS Expr1
FROM Paie.dbo.PAI_DOS_EMPL AS PAI_DOS_EMPL_1
WHERE (MATR = PC.MATR) AND (ETAT = 'C14' OR
ETAT = 'C15' OR
ETAT = 'E1') OR
(MATR = PC.MATR) AND (ETAT LIKE 'A%' OR
ETAT LIKE 'P%' OR
ETAT LIKE 'S%') AND (STAT_ENG = 'E1' OR
STAT_ENG = 'P1' OR
STAT_ENG = 'G1')) <= 0) AND (NOT EXISTS
(SELECT ID_CAND
FROM Paie.dbo.PAI_CAND_EMPL AS PAI_CAND_EMPL_1
WHERE (ID_CAND = PC.ID_CAND) AND (MOTIF_EXCLUS IS NOT NULL) AND (MOTIF_EXCLUS NOT IN ('0')))) AND (NOT EXISTS
(SELECT MOT_ABS
FROM Paie.dbo.PAI_DOS_PMNT_ABS AS PAI_DOS_PMNT_ABS_1
WHERE (MATR = PC.MATR) AND (MOT_ABS = '15' OR
MOT_ABS = '16' OR
MOT_ABS = '40' OR
MOT_ABS = '41' OR
MOT_ABS = '45' OR
MOT_ABS = '46' OR
MOT_ABS >= '52' AND MOT_ABS <= '57') OR
(MATR = PC.MATR) AND (MOT_ABS = '01') AND (CODE_PMNT >= 103522 AND CODE_PMNT <= 103541 OR
CODE_PMNT = 103572 OR
CODE_PMNT = 103573 OR
CODE_PMNT = 103577))) AND (NOT EXISTS
(SELECT STAT_ENG
FROM Paie.dbo.PAI_DOS_EMPL AS pados
WHERE (MATR = PC.MATR) AND (DATE_EFF > GETDATE()))) AND (NOT EXISTS
(SELECT MOTIF_AFF
FROM Paie.dbo.GRH_POSTE_AFFECT AS pados
WHERE (PC.MATR = MATR) AND (MOTIF_AFF LIKE '%S%') AND (DATE_EFF =
(SELECT MAX(DATE_EFF) AS Expr1
FROM Paie.dbo.GRH_POSTE_AFFECT AS aff
WHERE (MATR = PC.MATR))))) AND
((SELECT DATE_DERN_PAIE
FROM Paie.dbo.PAI_DOS
WHERE (MATR = PC.MATR)) > DATEADD(year, - 3, GETDATE())) OR
(STATUT_CAND IN (2, 3)) AND (DATE_DISPO < GETDATE() OR
DATE_DISPO IS NULL) AND
((SELECT COUNT(ID_CAND) AS Expr1
FROM Paie.dbo.PAI_CAND_RESULT_ENTREVUE AS pcre
WHERE (ID_CAND = PC.ID_CAND)) > 0) AND
((SELECT COUNT(MATR) AS Expr1
FROM Paie.dbo.PAI_DOS_EMPL AS PAI_DOS_EMPL_1
WHERE (MATR = PC.MATR) AND (ETAT = 'C14' OR
ETAT = 'C15' OR
ETAT = 'E1') OR
(MATR = PC.MATR) AND (ETAT LIKE 'A%' OR
ETAT LIKE 'P%' OR
ETAT LIKE 'S%') AND (STAT_ENG = 'E1' OR
STAT_ENG = 'P1' OR
STAT_ENG = 'G1')) <= 0) AND (NOT EXISTS
(SELECT ID_CAND
FROM Paie.dbo.PAI_CAND_EMPL AS PAI_CAND_EMPL_1
WHERE (ID_CAND = PC.ID_CAND) AND (MOTIF_EXCLUS IS NOT NULL) AND (MOTIF_EXCLUS NOT IN ('0')))) AND (NOT EXISTS
(SELECT MOT_ABS
FROM Paie.dbo.PAI_DOS_PMNT_ABS AS PAI_DOS_PMNT_ABS_1
WHERE (MATR = PC.MATR) AND (MOT_ABS = '15' OR
MOT_ABS = '16' OR
MOT_ABS = '40' OR
MOT_ABS = '41' OR
MOT_ABS = '45' OR
MOT_ABS = '46' OR
MOT_ABS >= '52' AND MOT_ABS <= '57') OR
(MATR = PC.MATR) AND (MOT_ABS = '01') AND (CODE_PMNT >= 103522 AND CODE_PMNT <= 103541 OR
CODE_PMNT = 103572 OR
CODE_PMNT = 103573 OR
CODE_PMNT = 103577))) AND (NOT EXISTS
(SELECT STAT_ENG
FROM Paie.dbo.PAI_DOS_EMPL AS pados
WHERE (MATR = PC.MATR) AND (DATE_EFF > GETDATE()))) AND (NOT EXISTS
(SELECT MOTIF_AFF
FROM Paie.dbo.GRH_POSTE_AFFECT AS pados
WHERE (PC.MATR = MATR) AND (MOTIF_AFF LIKE '%S%') AND (DATE_EFF =
(SELECT MAX(DATE_EFF) AS Expr1
FROM Paie.dbo.GRH_POSTE_AFFECT AS aff
WHERE (MATR = PC.MATR))))) AND
((SELECT DATE_DERN_PAIE
FROM Paie.dbo.PAI_DOS AS PAI_DOS_1
Nicht nur ist es fast unmöglich, etwas zu verstehen (persönlich ich nicht) Aber es ist 3 Mal länger als das, das ich schrieb ... Inakzeptabel, gibt es eine Möglichkeit, das automatische Format auszuschalten? Wenn nicht, behalte ich mein Format in einer separaten Datei und kopiere es jedes Mal.
Verwenden Sie nicht den Designer. Es macht schreckliche Dinge zum Formatieren. Klicken Sie einfach mit der rechten Maustaste und "Skript als in neues Fenster erstellen". Es wird Ihre Formatierung beibehalten. –
Verwenden Sie * keine * der visuellen Designer in SSMS; Sie alle machen schreckliche Dinge. –
@SeanLange Also schlagen Sie vor, dass ich das immer mache: Klicken Sie mit der rechten Maustaste auf die Ansicht, Skriptansicht als, ALTER TO, Neues Abfrageeditorfenster? Dies verhindert die automatische Formatierung? –