Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
Подскажите, поалуйста. Почему второй case не обрабатывает, точнее начиная с него ошибки (подчеркивает красным. А ругается на первый case ALTER TABLE dbo.Заявка DROP COLUMN PointCalc; GO ALTER TABLE dbo.Заявка ADD PointCalc AS ( case when Приоритет.PrioritetCalc = 'Консультация' and Заявка.Ontime = '1' then 10 else 8 end case when Приоритет.PrioritetCalc = 'Критическая ошибка' and Заявка.Ontime = '1' then 10 else 0 end case when Приоритет.PrioritetCalc= '1-го уровня' and Заявка.Ontime = '1' then 10 else 3 end case when Приоритет.PrioritetCalc= '2-го уровня' and Заявка.Ontime = '1' then 10 else 5 end case when Приоритет.PrioritetCalc= 'Ошибка 3-го уровня' and Заявка.Ontime = '1' then 10 else 7 end case when Приоритет.PrioritetCalc= 'Ошибка 4-го уровня' and Заявка.Ontime = '1' then 10 else 8 end case when Приоритет.PrioritetCalc= 'Доработка' and Заявка.Ontime = '1' then 10 else 8 end ); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:01 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
... и не только... что хотите-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:04 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
isq1992, Медведь упрлс с этими CASE до конца лень писать Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:05 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
TaPaK, case when Приоритет.PrioritetCalc = 'Консультация' and Заявка.Ontime = '1' then 10 else 8 when Приоритет.PrioritetCalc = 'Критическая ошибка' and Заявка.Ontime = '1' then 10 else 0 when Приоритет.PrioritetCalc= '1-го уровня' and Заявка.Ontime = '1' then 10 else 3 when Приоритет.PrioritetCalc= '2-го уровня' and Заявка.Ontime = '1' then 10 else 5 when Приоритет.PrioritetCalc= 'Ошибка 3-го уровня' and Заявка.Ontime = '1' then 10 else 7 when Приоритет.PrioritetCalc= 'Ошибка 4-го уровня' and Заявка.Ontime = '1' then 10 else 8 when Приоритет.PrioritetCalc= 'Доработка' and Заявка.Ontime = '1' then 10 else 8 Ошибки. Мне нужен else ,поэтому и добавила case - end лишних ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:10 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
Вам не else нужно, а словами рассказать, что вы тут городите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:14 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, гороу вычисляемое поле. Оно заполняется по указанным критериям . Т.Е. важны только : PrioritetCalc = 'Критическая ошибка' если в срок, то 10 если не в срок 3 Приоритет.PrioritetCalc= '1-го уровня' (по аналогии с крит ошиькой, но другие баллы ) Приоритет.PrioritetCalc= '2-го уровня' (по аналогии с крит ошиькой, но другие баллы ) Приоритет.PrioritetCalc= 'Ошибка 3-го уровня' (по аналогии с крит ошиькой, но другие баллы ) Приоритет.PrioritetCalc= 'Ошибка 4-го уровня' (по аналогии с крит ошиькой, но другие баллы ) Поле PrioritetCalc находится в таблице Приоритет. Новое поле создается в таблице Заявка, связянной с табл. ПРиоритет с вторичным ключем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:19 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
isq1992Гавриленко Сергей Алексеевич, гороу вычисляемое поле. Оно заполняется по указанным критериям . Т.Е. важны только : PrioritetCalc = 'Критическая ошибка' если в срок, то 10 если не в срок 3 Приоритет.PrioritetCalc= '1-го уровня' (по аналогии с крит ошиькой, но другие баллы ) Приоритет.PrioritetCalc= '2-го уровня' (по аналогии с крит ошиькой, но другие баллы ) Приоритет.PrioritetCalc= 'Ошибка 3-го уровня' (по аналогии с крит ошиькой, но другие баллы ) Приоритет.PrioritetCalc= 'Ошибка 4-го уровня' (по аналогии с крит ошиькой, но другие баллы ) Поле PrioritetCalc находится в таблице Приоритет. Новое поле создается в таблице Заявка, связянной с табл. ПРиоритет с вторичным ключемВам же уже написали вот тут 21114754 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:22 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
isq1992, я же написал тебе замену else, что ж не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:22 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
TaPaK, потому что в каждой ветке OnTime = 0 (else) свои баллы. Или добавлять дополнительный when для условий, когда OnTime = 0 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:27 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
isq1992, case перебирает свои when-ы сверху вниз пока не наткнётся на тот который даёт истину по условиям (выполняется только этот when-then остальные игнорируются) поэтому: Код: sql 1. 2. 3. 4. проверяет первое условие если истина то только в этом случае будет 10 (и на этом case закончится) если не истина проверяем дальше вниз, второй when отличается от первого только Заявка.Ontime <> '1' т.е. 3 балла будет только если "критическая и не в срок" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:37 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
TaPaK Код: sql 1. 2. 3. 4. Тц-тц-тц. И все записи Заявка.Ontime = NULL свалятся в NULL. И возопит ТС, что дали ему кривой скрипт :) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:56 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
а, оу, в заголовке 2008. ну тогда долгий и мучительный WHEN WHEN WHEN, а в конце the END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:57 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
Хотя тут прослеживается чудовищная логика Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:59 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, а джойн где писать ? ИЛи условие where У меня ругается на : Не удалось привязать составной идентификатор "Приоритет.PrioritetCalc". Т.Е, нужно соединение добавляю после до \после end - ругается. По идее это не Select -й запрос . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 00:00 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
isq1992а джойн где писать ? ИЛи условие where А с чего вы решили, что при создании вычисляемого поля можно писать join или where? Используете буйную фантазию вместо документации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 01:04 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
isq1992Руслан Дамирович, а джойн где писать ? ИЛи условие where Так это вам не вычисляемое поле нужно. А триггер уже Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 11:07 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, именно так ) как Вы догадались ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 05:37 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, Огромное спасибо!!! Отработало, но почему то значения null даже там, где OnTime=1. Может быть потому, что OnTime - вычисляемое поле? К нему тоже триггер писать ? USE [БД_Заявки] GO /****** Object: Trigger [dbo].[Заявка_триггер_Расчет_Баллов] Script Date: 01/19/2018 05:15:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [dbo].[Заявка_триггер_Расчет_Баллов] ON [dbo].[Request] AFTER INSERT, UPDATE AS BEGIN UPDATE t SET t.[PointCalc] = CASE WHEN t.[Ontime] = '1' THEN 10 WHEN s.[PrioritetCalc] = 'Консультация' THEN 8 WHEN s.[PrioritetCalc] = 'Критическая ошибка' THEN 0 WHEN s.[PrioritetCalc] = '1-го уровня' THEN 3 WHEN s.[PrioritetCalc] = '2-го уровня' THEN 5 WHEN s.[PrioritetCalc] = '3-го уровня' THEN 7 WHEN s.[PrioritetCalc] = '4-го уровня' THEN 8 WHEN s.[PrioritetCalc] = 'Доработка' THEN 8 END FROM inserted i INNER JOIN dbo.Request t ON ( t.KeyRequest= i.KeyRequest) INNER JOIN dbo.Prioritet s on ( s.[<KeyPrioritet>] = t.[<KeyPrioritet>] ) ; END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2018, 05:41 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, Вы не подскажите, почему триггер не работает? Даже для условия OnTime =1. Оно физически есть в БД, и значения тоже :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2018, 23:50 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
isq1992Руслан Дамирович, Вы не подскажите, почему триггер не работает? Даже для условия OnTime =1. Оно физически есть в БД, и значения тоже :(А сам запрос данные возвращает? Не в триггере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2018, 00:36 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
alexeyvg, запрос на выборку, да возвращает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2018, 01:07 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, я вышла из базы, снова зашла - не работало. Написало парочку запросов UPDATE к другими столбцам. И о чудо! Поле заполнилось))))))))))))). Хотя до этого и сохраняла, и селекты с выборками различными делала - не в какую.... И несколько раз нажимала выполнить на запросе ( триггере ) Я думаю, зря я переименовала стобцы, не везде дошло до базы ). Большущее спасибо лично Вам за помощь !!!))))) И спасибо всем участникам ))))))))))))))) Вселенской моркови всем вам ))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2018, 03:43 |
|
||
|
SQL 2008
|
|||
|---|---|---|---|
|
#18+
isq1992И несколько раз нажимала выполнить на запросе ( триггере )Это что значит? "Выполнить на триггере" - это значит создать триггер. isq1992И о чудо! Поле заполнилось)))))))))))))Наверняка просто невнимательность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2018, 10:50 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=168&tid=1690462]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 387ms |

| 0 / 0 |
