2017-01-16 1 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) 

この方法では、私は今、MAIN 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 

何かを理解することはほとんど不可能であるだけでなく(私はそうではありません) しかし、それは1つの時間が3時間長くなりました ...受け入れられない、自動フォーマットをオフにする方法はありますか?そうでない場合は、フォーマットを別のファイルに保存し、毎回コピーを貼り付けるつもりです。

+10

デザイナーは使用しないでください。書式設定には恐ろしいことがあります。ちょうど右クリックし、 "新しいウィンドウに作成するスクリプト"。あなたの書式を維持します。 –

+6

SSMSのビジュアルデザイナーの* *を使用しないでください。彼らはすべて恐ろしいことをする。 –

+0

@SeanLangeだから、私はいつもこれをやってみることをお勧めします:ビューを右クリックし、スクリプトビューをALTER To、新しいQuery Editorウィンドウをクリックしますか?これにより、自動フォーメーティングが起こらないようにします。 –

答えて

4

デザイナーは使用しないでください。書式設定には恐ろしいことがあります。ちょうど右クリックし、 "新しいウィンドウに作成するスクリプト"。あなたの書式を維持します。そして、Aaron Bertrandがコメントしたように、ビジュアルデザイナーのを使用しないでください。

+0

私はあなたとアーロンに同意します、彼らは恐ろしいことをします。しかし、あなたはビジュアルデザイナーを一度も使用すべきではないと言っていますか?もしそうなら、なぜ彼らは最初にそこにいますか? – Joe

+2

彼らは動作しますが、生成するコードはひどいです。多くの人が独自のSQLを書くことができないために存在します。 –

+0

これはAccessと似ていますが、リレーションの概念を理解すれば、それを視覚的に行うことができます。しかし、手動で行う場合は、作成するクエリが、おそらくビジュアルリンクと比べて優れているでしょう –

関連する問題