1. SQL / Говнокод #2818

    −132.6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    SELECT [IdPart],
    			[num],
    			NameRus AS PartName,
    			Rests, 
    			Income, 
    			Defect, 
    			Rests +ISNULL([1],0) [1], 
    			Rests +ISNULL([1],0)+ISNULL([2],0) [2], 
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0) [3], 
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0) [4], 
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0)+ ISNULL([5],0) [5], 
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0)+ ISNULL([5],0)+ ISNULL([6],0)[6], 
    			...
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0)+ ISNULL([5],0)+ ISNULL([6],0)+ ISNULL([7],0)+ ISNULL([8],0)+ ISNULL([9],0)+ ISNULL([10],0)+ ISNULL([11],0)[11], 
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0)+ ISNULL([5],0)+ ISNULL([6],0)+ ISNULL([7],0)+ ISNULL([8],0)+ ISNULL([9],0)+ ISNULL([10],0)+ ISNULL([11],0)+ ISNULL([12],0)[12], 
                            ...
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0)+ ISNULL([5],0)+ ISNULL([6],0)+ ISNULL([7],0)+ ISNULL([8],0)+ ISNULL([9],0)+ ISNULL([10],0)+ ISNULL([11],0)+ ISNULL([12],0)+ ISNULL([13],0)+ ISNULL([14],0)+ ISNULL([15],0)+ ISNULL([16],0)+ ISNULL([17],0)+ ISNULL([18],0)+ ISNULL([19],0)+ ISNULL([20],0)+ ISNULL([21],0)+ ISNULL([22],0)[22], 
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0)+ ISNULL([5],0)+ ISNULL([6],0)+ ISNULL([7],0)+ ISNULL([8],0)+ ISNULL([9],0)+ ISNULL([10],0)+ ISNULL([11],0)+ ISNULL([12],0)+ ISNULL([13],0)+ ISNULL([14],0)+ ISNULL([15],0)+ ISNULL([16],0)+ ISNULL([17],0)+ ISNULL([18],0)+ ISNULL([19],0)+ ISNULL([20],0)+ ISNULL([21],0)+ ISNULL([22],0)+ ISNULL([23],0)[23], 
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0)+ ISNULL([5],0)+ ISNULL([6],0)+ ISNULL([7],0)+ ISNULL([8],0)+ ISNULL([9],0)+ ISNULL([10],0)+ ISNULL([11],0)+ ISNULL([12],0)+ ISNULL([13],0)+ ISNULL([14],0)+ ISNULL([15],0)+ ISNULL([16],0)+ ISNULL([17],0)+ ISNULL([18],0)+ ISNULL([19],0)+ ISNULL([20],0)+ ISNULL([21],0)+ ISNULL([22],0)+ ISNULL([23],0)+ ISNULL([24],0)[24], 
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0)+ ISNULL([5],0)+ ISNULL([6],0)+ ISNULL([7],0)+ ISNULL([8],0)+ ISNULL([9],0)+ ISNULL([10],0)+ ISNULL([11],0)+ ISNULL([12],0)+ ISNULL([13],0)+ ISNULL([14],0)+ ISNULL([15],0)+ ISNULL([16],0)+ ISNULL([17],0)+ ISNULL([18],0)+ ISNULL([19],0)+ ISNULL([20],0)+ ISNULL([21],0)+ ISNULL([22],0)+ ISNULL([23],0)+ ISNULL([24],0)+ ISNULL([25],0)[25], 
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0)+ ISNULL([5],0)+ ISNULL([6],0)+ ISNULL([7],0)+ ISNULL([8],0)+ ISNULL([9],0)+ ISNULL([10],0)+ ISNULL([11],0)+ ISNULL([12],0)+ ISNULL([13],0)+ ISNULL([14],0)+ ISNULL([15],0)+ ISNULL([16],0)+ ISNULL([17],0)+ ISNULL([18],0)+ ISNULL([19],0)+ ISNULL([20],0)+ ISNULL([21],0)+ ISNULL([22],0)+ ISNULL([23],0)+ ISNULL([24],0)+ ISNULL([25],0)+ ISNULL([26],0)[26], 
    			...
    			Rests +ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0)+ ISNULL([5],0)+ ISNULL([6],0)+ ISNULL([7],0)+ ISNULL([8],0)+ ISNULL([9],0)+ ISNULL([10],0)+ ISNULL([11],0)+ ISNULL([12],0)+ ISNULL([13],0)+ ISNULL([14],0)+ ISNULL([15],0)+ ISNULL([16],0)+ ISNULL([17],0)+ ISNULL([18],0)+ ISNULL([19],0)+ ISNULL([20],0)+ ISNULL([21],0)+ ISNULL([22],0)+ ISNULL([23],0)+ ISNULL([24],0)+ ISNULL([25],0)+ ISNULL([26],0)+ ISNULL([27],0)+ ISNULL([28],0)+ISNULL([29],0)+ISNULL([30],0)+ISNULL([31],0)[31]
    			, Rests+Income-Defect + ISNULL([1],0)+ ISNULL([2],0)+ ISNULL([3],0)+ ISNULL([4],0)+ ISNULL([5],0)+ ISNULL([6],0)+ ISNULL([7],0)+ ISNULL([8],0)+ ISNULL([9],0)+ ISNULL([10],0)+ ISNULL([11],0)+ ISNULL([12],0)+ ISNULL([13],0)+ ISNULL([14],0)+ [15]+ [16]+ ISNULL([17],0)+ ISNULL([18],0)+ ISNULL([19],0)+ ISNULL([20],0)+ ISNULL([21],0)+ ISNULL([22],0)+ ISNULL([23],0)+ ISNULL([24],0)+ ISNULL([25],0)+ ISNULL([26],0)+ISNULL([27],0)+ISNULL([28],0)+ISNULL([29],0)+ISNULL([30],0)+ISNULL([31],0) AS TotalExpence
    		FROM
    	(
    .....

    Типа нарастающий итог. Ну слов просто нет. ИМХО, это что-то из разряда использовать микроскоп для забивания гвоздей.

    Karasb, 18 Марта 2010

    Комментарии (4)
  2. SQL / Говнокод #2807

    −144.2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    SELECT
        id, description_ru, description_en,
        FLOOR(LENGTH(TRIM(description_ru))/2+0.5) AS descr_ru,
        LENGTH(TRIM(description_en)) AS `descr_en`
    FROM items
    ORDER BY descr_ru desc;

    получает id, русское описание, английское описание, а потом размеры описаний
    и сортирует по размеру русского описания.
    база в UTF-8, поэтому размеры описаний в символах решил посчитать вот таким говноспособом...
    таблица >30 000 записей.
    Говнодиверсант какой-то :)

    alexgray, 16 Марта 2010

    Комментарии (16)
  3. SQL / Говнокод #2799

    −157.8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    CREATE PROCEDURE "auot".uot_inv_procs2
    (
      NumFunc Integer,	-- Номер функции :
    		    -- 1 - Вставляет строку 
                        -- 2 - Создает временную таблицу 
                        -- 3 - Удаляет временную таблицу 
                        -- 4 - Создает временную таблицу 
                        -- 5 - Удаляет временную таблицу 
                        -- 6 - Возвращает Dogovor.Dog_id
                        -- 7 - Создает TempTableInvoice
                        -- 8 - Создает TmpTabDeclInv
                        -- 9 - Создает TmpTabDeclSel
                        --10 - Заолняет TmpTabDeclSel 
                        --11 - Добавляет в TmpTabVCSel
                        --12 - Обновляет информацию 
    
      n_Numb_inv        NVarChar(10,0) DEFAULT NULL,	
      n_Date_inv        Date DEFAULT NULL,	
      n_Code_exp        Char(2) DEFAULT NULL,	
      n_Prod_code       Char(3) DEFAULT NULL,
      n_Code_Transport  Char(1) DEFAULT NULL,
      n_Code_Date_Cen   Char(1) DEFAULT NULL,
      n_Contract        NVarChar(30,0) DEFAULT NULL,
      n_DateContract    Date DEFAULT NULL,		
      n_Weight          Numeric(10,3) DEFAULT NULL,
      n_Price           Numeric(8,2) DEFAULT NULL,	
      n_Total           Numeric(15,2) DEFAULT NULL,	
      n_Kod_val_id      Integer DEFAULT NULL,		
      n_Date_konos      Date DEFAULT NULL,		
      n_SHB_Signature   Char(6) DEFAULT NULL,	
      n_Seller_Sign     Char(6) DEFAULT NULL,		
      n_Date_prix       Date DEFAULT NULL,		
      n_Date_move       Date DEFAULT NULL,		
      n_SUM_CLS         Numeric(15,2) DEFAULT NULL,
      n_Consignee       NVarChar(150,0) DEFAULT NULL,
      n_Buyer           NVarChar(150,0) DEFAULT NULL,	
      n_Pnt_departure   NVarChar(150,0) DEFAULT NULL,
      n_Destination     NVarChar(150,0) DEFAULT NULL,
      n_Steam_vessel    NVarChar(50,0) DEFAULT NULL,
      n_Delivery_terms  NVarChar(18,0) DEFAULT NULL,
      n_Status          Char(1) DEFAULT 'N',				
      n_Dogovor_id      Integer DEFAULT NULL,		
      n_Date_min        Date DEFAULT NULL,			
      n_Date_max        Date DEFAULT NULL,			
      n_Invoice_id      Integer DEFAULT NULL,			
      n_Res_Code        Char(8) DEFAULT NULL,			
      n_Date_Sale_Uved  Date DEFAULT NULL,			
      n_Month           Date DEFAULT NULL				
    
    )	
    RETURNING INTEGER;
    
    
    DEFINE GLOBAL __current_user INTEGER  DEFAULT NULL;
    DEFINE GLOBAL err_sqlcode    INTEGER  DEFAULT 0;
    DEFINE GLOBAL err_isamcode   INTEGER  DEFAULT 0;
    DEFINE GLOBAL err_detail     CHAR(80) DEFAULT '';
    
    DEFINE _inv_id         Integer;
    
    DEFINE _Name_exp       NVarChar(40,0);
    DEFINE _Name_rus       NVarChar(50,0);
    DEFINE _Smlval         Char(3);
    DEFINE _rlw_id         Integer;
    DEFINE _weight_brutto  Decimal(12,3);
    DEFINE _Bes_inv        Decimal(12,3);
    DEFINE _Sum_inv        Numeric(15,2);
    DEFINE _Bes_free       Decimal(12,3);
    DEFINE _Sum_free       Numeric(15,2);
    DEFINE _Sum_Weight_Inv DECIMAL(12,3);
    DEFINE _SHB_Name       NVARCHAR(60,0);
    DEFINE _dogovor        NChar(15);
    DEFINE _dlv_id         Integer;
    DEFINE _Decl_num       Char(23);
    DEFINE _Decl_date      Date;
    DEFINE _Buyer          NVarChar(80);
    DEFINE _Currency_rate  Money(16,2);
    DEFINE _CenaRus        Money(16,2);
    DEFINE _Prod_All       NVarChar(93);
    DEFINE _org_name       NVarChar(80,0);
    DEFINE _SumRUR         Money(16,2);
    DEFINE _SumKinef       Money(16,2);
    DEFINE _Delta          Money(16,2);
    DEFINE _Effect         Money(16,2);
    DEFINE _Dog_id         Integer;
    DEFINE _Res_code       Char(8);
    DEFINE _carriage_num   NChar(18);
    DEFINE _nom_nakl       NChar(10);
    DEFINE _Shpok_char     Char(4);
    DEFINE _Parent         SmallInt;
    DEFINE _Date_otgr      DateTime YEAR TO SECOND;
    
    IF NumFunc=2 THEN  -- Создаем временную табл. SprInvByProd
      CREATE TEMP TABLE SprInvByProd......

    и так далее по каждому из 12 пунктов.....просто процедура на все случаи жизни..чувак реально попотел когда сие изобретал....

    Grizzly, 15 Марта 2010

    Комментарии (5)
  4. SQL / Говнокод #2797

    −863

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    CREATE PROCEDURE mix_kach1_spravka(
    _date_time	DATETIME YEAR TO MINUTE, -- дата
    _param_rez_id integer -- признак
    ) RETURNING integer, -- туфта
    decimal; -- туфта
    
    define _date_r nchar(19);
    define _wzliv decimal;
    define _n_nn_rez nchar(4);
    define _mass integer;
    define _mass1 integer;
    define _date_begin DATETIME YEAR TO MINUTE;
    define _date_end DATETIME YEAR TO MINUTE;
    define _count integer;
    define _wzliv_beg INTEGER;
    define _bes_pas DECIMAL;
    define i int;
    define  _spr_id		  integer;
    define	_all_w             decimal(7,1);
    define	_go_w              decimal(7,1);
    define	_pr_w              decimal(7,1);
    define	_proc_go           decimal(4,1);
    define	_proc_pr           decimal(4,1);
    define _edatebegin Datetime year to minute;
    define _w int;
    define _m_go decimal;
    define _m_pr decimal;
    define test_date DATETIME YEAR TO MINUTE;
    
    /*Опустим блок обработки ошибок*/
    
    CREATE TEMP TABLE tmp_raschet1(
    	--spr_id		  SERIAL NOT NULL,
    	edate       Datetime year to MINUTE, --27.08.2008 Лазарев Е.В.
    	w 		  int,
    	all_w             decimal(7,1),
    	go_w              decimal(7,1),
    	pr_w              decimal(7,1),
    	proc_go           decimal(4,1),
    	proc_pr           decimal(4,1)
    ) with no log;
    
    let _m_go = 0;
    let _m_pr = 0;
    
    execute procedure get_mix_quality(_date_time,_param_rez_id) into _w, _all_w, _go_w, _pr_w, _proc_go, _proc_pr, _edatebegin;
    insert into tmp_raschet1 (edate,w,all_w, go_w,pr_w,proc_go,proc_pr) values (_edatebegin,_w,_all_w, _go_w, _pr_w, _proc_go, _proc_pr);
    
    END PROCEDURE;

    Вот честно, что это и зачем такое нужно? Наверно выполнить процедуру и просто взять выходные данные не судьба.
    А лишние переменные видимо на всякий случай.
    P.S. Боже за что?!!!

    Grizzly, 15 Марта 2010

    Комментарии (4)
  5. SQL / Говнокод #2794

    −151

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    CREATE TEMP TABLE tmp_sale_exp (
    	id	SERIAL NOT NULL,
    	dog_id	integer,
    	shpok	char(4),		
    	is_komiss integer,	
    	F2	nchar(80)
    	F3	nchar(3),	
    	F4	date,	
    	F5	char(3),	
    	nakl_item_id integer,	
    	F9	char(9),	
    	F10	date,
    	act_qnt	decimal(16,3),
    	F11	nchar(1),
    	F12	nvarchar(32),	
    	decl_id	integer,
    	F16	char(23),		
    	F17	date,		
    	F18	decimal(16,3),	
    	F21	money(16,2),	
    	F22	money(16,2),	
    	ppd_decl_num	char(23),		
    	ppd_weight decimal(16,3),
    	ppd_summa money(16,2),
    	ppd_price	 money(16,2),	
    	invoice_id  integer,	
    	F23	nvarchar(10),	
    	F24	date,		
    	F25	decimal(16,3),	
    	smlval	char(3),		
    	nakl2inv	decimal(16,3),	
    	price	money(16,2),
    	total	money(16,2),	
    	prod_code char(3)	,	
    	res_name nvarchar(45),
    	F48	date,		
    	F49	money(16,2),	
    	 ip_id	integer	
    ) WITH NO LOG;

    вот недопрограммист создает временную таблицу, с очень ясными и понятными полями, он же думает что он вечный, и в его говнокоде потом никто разбираться не будет.
    ммммммммммм....а какие интересные суммы, то decimal, то money, жалко но в этом конкретном примере нет еще и float, обычно они присутствуют все 3 типа и в одной таблице.....зачем???? я не знаю

    Grizzly, 15 Марта 2010

    Комментарии (10)
  6. SQL / Говнокод #2718

    −860.1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    s :=
                Replace(
                  Replace(
                    Replace(s,' ')
                  ,',',ltrim(to_char(0,'D')))
                ,'.',ltrim(to_char(0,'D')));

    Кодер думает, что так будет понятнее, что на что заменяется.
    По-моему намного читабельнее было бы разбить это на 3 отдельных вызова Replace

    gorsash, 04 Марта 2010

    Комментарии (0)
  7. SQL / Говнокод #2697

    −169

    1. 1
    2. 2
    3. 3
    4. 4
    SELECT NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
           type_table_of_name_tag_value ()
      FROM DUAL
     WHERE dummy = 'Z'

    andrew, 01 Марта 2010

    Комментарии (8)
  8. SQL / Говнокод #2676

    −151.7

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    SELECT
    CASE WHEN  Subtask.ParentTask_ID = 1 
    THEN 0 ELSE CASE WHEN 
    (
    	SELECT  SUM([Percent]) AS SumOfPercent 
    	FROM  Reports  GROUP BY Zadanie_ID 
    	HAVING  (Zadanie_ID = SubTask.SubTask_ID)) IS NULL 
    	THEN 0 ELSE  (SELECT  SUM([Percent]) AS SumOfPercent 
    	FROM      Reports GROUP BY Zadanie_ID 
    	HAVING   (Zadanie_ID = SubTask.SubTask_ID)
    ) END 
    END 
    AS SumOfPercent, 
    CASE WHEN Subtask.isContinued <> 1 
    THEN ((persons_1.Baza / 0.25) * (
    CASE WHEN Subtask.dateEnding IS NULL 
    THEN CAST(SubTask.SubTask_EndDate - DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0) AS integer)  
    ELSE CAST(SubTask.SubTask_EndDate - SubTask.DateEnding AS integer) 
    END -  
    DATEDIFF(ww, CASE WHEN Subtask.dateending IS NOT NULL THEN Subtask.dateending ELSE getdate() END,    
    SubTask.SubTask_EndDate) * 2) / 8 * CAST( Priority.Priority_Name AS numeric) / 1000)  
    ELSE CASE WHEN ((persons_1.Baza / 0.25)* (CASE WHEN Subtask.dateEnding IS NULL THEN  
    CAST(SubTask.SubTask_EndDate - DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0) AS integer)  
    ELSE CAST(SubTask.SubTask_EndDate - SubTask.DateEnding AS integer)END -   
    DATEDIFF(ww, CASE WHEN Subtask.dateending IS NOT NULL THEN Subtask.dateending ELSE getdate() END,    
    SubTask.SubTask_EndDate) * 2)/ 8 * CAST( Priority.Priority_Name AS numeric)/ 1000) > 0 THEN 0  
    ELSE (persons_1.Baza / 0.25) * (CASE WHEN Subtask.dateEnding IS NULL 
    THEN  CAST(SubTask.SubTask_EndDate - DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0) AS integer) 
    ELSE CAST(SubTask.SubTask_EndDate - SubTask.DateEnding  AS integer) END - 
    DATEDIFF(ww, CASE WHEN Subtask.dateending IS NOT NULL  THEN Subtask.dateending ELSE getdate() END,  
    SubTask.SubTask_EndDate) * 2) / 8 * CAST( Priority.Priority_Name AS numeric)   / 1000 END END AS timebonus,  
    CASE WHEN Subtask.isContinued <> 1 THEN (CASE WHEN (CASE WHEN  SubTask.executed = 0 
    THEN  CAST(Subtask.Subtask_EndDate - DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0) AS int) 
    ELSE CAST(Subtask.Subtask_EndDate - Subtask.DateEnding AS int)  END >= 0)
    THEN (0.40 * (persons_1.Baza * CASE WHEN  
    (SELECT  SUM([Hours]) AS sumHours FROM Reports where (isreal=1) or (isReal=null) GROUP BY Zadanie_ID 
    HAVING  (Zadanie_ID = Subtask.Subtask_ID))  IS NULL  THEN 0 ELSE  
    (SELECT  SUM([Hours]) AS sumHours FROM Reports where (isreal=1) or (isReal=null) GROUP BY Zadanie_ID 
    HAVING  (Zadanie_ID = Subtask.Subtask_ID))  END)) 
    * (CAST( Priority.Priority_Name AS numeric) / 1000) ELSE 0 END) ELSE 0 END  AS PriorityBonus
    ...

    Я знаю, это трудно понять, но это алгоритм расчета правду о Жизни, Вселенной и Всего Такого. Это SQL выполняется на каждом Login в систему.

    dzver, 26 Февраля 2010

    Комментарии (8)
  9. SQL / Говнокод #2674

    −154.7

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    WITH days(num, aday) AS 
    (
    	SELECT 1 AS num, 1 AS aday
    	UNION ALL 
    	SELECT num, aday+1 AS aday FROM days
    	WHERE days.[aday] < DAY( DATEADD(DAY, -DAY(@date), DATEADD(MONTH, 1 , @date)))
    )
    	SELECT     SUM(day1) AS d1, SUM(day2) AS d2, SUM(day3) AS d3, SUM(day4) AS d4, SUM(day5) AS d5, SUM(day6) AS d6, SUM(day7) AS d7, SUM(day8) AS d8, 
    						  SUM(day9) AS d9, SUM(day10) AS d10, SUM(day11) AS d11, SUM(day12) AS d12, SUM(day13) AS d13, SUM(day14) AS d14, SUM(day15) AS d15, 
    						  SUM(day16) AS d16, SUM(day17) AS d17, SUM(day18) AS d18, SUM(day19) AS d19, SUM(day20) AS d20, SUM(day21) AS d21, SUM(day22) AS d22, 
    						  SUM(day23) AS d23, SUM(day24) AS d24, SUM(day25) AS d25, SUM(day26) AS d26, SUM(day27) AS d27, SUM(day28) AS d28, SUM(day29) AS d29, 
    						  SUM(day30) AS d30, SUM(day31) AS d31
    	FROM         (SELECT     CASE aday WHEN 1 THEN 1 ELSE 0 END AS day1, CASE aday WHEN 2 THEN 2 ELSE 0 END AS day2, 
    												  CASE aday WHEN 3 THEN 3 ELSE 0 END AS day3, CASE aday WHEN 4 THEN 4 ELSE 0 END AS day4, 
    												  CASE aday WHEN 5 THEN 5 ELSE 0 END AS day5, CASE aday WHEN 6 THEN 6 ELSE 0 END AS day6, 
    												  CASE aday WHEN 7 THEN 7 ELSE 0 END AS day7, CASE aday WHEN 8 THEN 8 ELSE 0 END AS day8, 
    												  CASE aday WHEN 9 THEN 9 ELSE 0 END AS day9, CASE aday WHEN 10 THEN 10 ELSE 0 END AS day10, 
    												  CASE aday WHEN 11 THEN 11 ELSE 0 END AS day11, CASE aday WHEN 12 THEN 12 ELSE 0 END AS day12, 
    												  CASE aday WHEN 13 THEN 13 ELSE 0 END AS day13, CASE aday WHEN 14 THEN 14 ELSE 0 END AS day14, 
    												  CASE aday WHEN 15 THEN 15 ELSE 0 END AS day15, CASE aday WHEN 16 THEN 16 ELSE 0 END AS day16, 
    												  CASE aday WHEN 17 THEN 17 ELSE 0 END AS day17, CASE aday WHEN 18 THEN 18 ELSE 0 END AS day18, 
    												  CASE aday WHEN 19 THEN 19 ELSE 0 END AS day19, CASE aday WHEN 20 THEN 20 ELSE 0 END AS day20, 
    												  CASE aday WHEN 21 THEN 21 ELSE 0 END AS day21, CASE aday WHEN 22 THEN 22 ELSE 0 END AS day22, 
    												  CASE aday WHEN 23 THEN 23 ELSE 0 END AS day23, CASE aday WHEN 24 THEN 24 ELSE 0 END AS day24, 
    												  CASE aday WHEN 25 THEN 25 ELSE 0 END AS day25, CASE aday WHEN 26 THEN 26 ELSE 0 END AS day26, 
    												  CASE aday WHEN 27 THEN 27 ELSE 0 END AS day27, CASE aday WHEN 28 THEN 28 ELSE 0 END AS day28, 
    												  CASE aday WHEN 29 THEN 29 ELSE 0 END AS day29, CASE aday WHEN 30 THEN 30 ELSE 0 END AS day30, 
    												  CASE aday WHEN 31 THEN 31 ELSE 0 END AS day31
    						   FROM          days) AS col

    Думаю в комментариях не нуждается T_T.

    Karasb, 26 Февраля 2010

    Комментарии (0)
  10. SQL / Говнокод #2537

    −149.2

    1. 1
    2. 2
    3. 3
    4. 4
    create table money_transaction(
    ...
    summa clob
    );

    подготовка к гиперинфляции

    dim1r, 03 Февраля 2010

    Комментарии (8)