2017-01-16 52 views
1

可以使用通用格式,我有我的,我和我的团队在编写SQL时使用相同的格式。有没有办法阻止SQL Server自动格式化我的视图查询?

现在,这里的问题是:我们使用SQL Server。我写了一个很长的观点,为了记住我做了什么,我打开了这个观点的“设计”。我注意到SQL Server完全搞砸了我的格式,并且应用了它自己的格式。更糟的是,它复制简单的条件,使他们不再为没有理由(也许我判断有点快...但是...)

这里是我的榜样,对不起,这是一个很长的情况下,你不“T要读它,只是注意格式:

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) 

这样,我知道那里的主要AND是,现在当我把这个成认为,这是多么的SQL Server格式是:

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 

它不仅是几乎不可能什么都不懂(我个人并不) 但它是3倍以上那么我所写 ...不可接受的,是有办法打开自动关闭格式?如果没有,我会把我的格式保存在一个单独的文件中,并且每次都复制粘贴它。

+10

请勿使用设计师。它格式化可怕的事情。只需右键单击并“脚本创建到新窗口”。它会保持你的格式。 –

+6

不要在SSMS中使用*任何*视觉设计师;他们都做了可怕的事情。 –

+0

@SeanLange所以你建议我总是这样做:右键单击视图,脚本视图为ALTER TO,新查询编辑器窗口?这将防止自动格式化发生? –

回答

4

不要使用设计。它格式化可怕的事情。只需右键单击并“脚本创建到新窗口”。它会保持你的格式。正如Aaron Bertrand评论说的,您应该避免使用视觉设计师的任何

+0

我同意你和亚伦的看法,他们做了可怕的事情。但你是否说过我们永远不应该使用任何视觉设计师?如果是这样,那么为什么他们在那里呢? – Joe

+2

他们工作,但他们生产的代码是可怕的。他们的存在是因为很多人不能编写自己的sql。 –

+0

这就像Access一样,如果你理解关系的概念,你可以做到可视化,并产生一个查询。但是,如果您手动执行此操作,那么您所做的查询可能会比视觉链接所做的更好 –

相关问题