Запрос, вызвавший проблему: SELECT TOTAL_PRFT / NO_OF_INSTALLMENT FROM InsightSource.BS.IS_H_LD_SCHEDULE
. Он должен возвращать только одну строку данных, ваш возвращает несколько.
Здесь есть две проблемы:
1 - та, которую вы указали в своем вопросе: подзапрос может вернуть более 1 результата. Вам нужно установить «определитель», к которому данные вы хотите. Например: если ваша таблица выглядит примерно так:
ID Total_prft No_Of_Installment
1 15 3
2 20 5
Тогда вы можете сделать так: SELECT TOTAL_PRFT / NO_OF_INSTALLMENT FROM InsightSource.BS.IS_H_LD_SCHEDULE WHERE ID = @ID
, где @ID - это предопределенная переменная (возможно, вы можете получить ее из таблицы GL) .
Или, как рекомендует @Suraj Kumar, вы также можете использовать ключевое слово TOP 1
, если оно работает для вас.
2- Другая проблема заключается в том, что вы не проверяете, является ли No_OF_Installment нулевым или нулевым, что приведет к ошибке деления. Пожалуйста, добавьте чек, добавив что-то вроде:
WHEN LDContractType = 'AMORT' THEN (
case when NO_OF_INSTALLMENT IS NOT NULL AND NO_OF_INSTALLMENT > 0
THEN SELECT TOTAL_PRFT / NO_OF_INSTALLMENT FROM InsightSource.BS.IS_H_LD_SCHEDULE
ELSE 0
END)
...
Я услышал о решениях этой проблемы, упоминающейся как "сценарий кнопки кадра". Быстрый Google придумывает этот поток. Похож это - один из самых простых:
if (window != top) top.location.href = location.href;
Смотрите на эту статью. Это предлагает довольно простое решение для обнаружения кадров и убегающий из них.
Как убежать из кадров с JavaScript
Кроме того, я взял бы его один шаг вперед. Каждый раз, когда Вы обнаруживаете кадр, захватываете идентификатор филиала незаконного создателя сайта и нажатие, что к серверу с Ajax наряду с URL они используют. Затем или автоматически или вручную, можно проверить, что они структурируют сайт и отменяют их код филиала по одному.
Просто предположив здесь..., но что, если Вы используете JavaScript для вызова родительского окна для доступа к его объекту документа? Вы могли проверить, если не пустой, и если существует родительское окно (значение кадра загрузило Ваш сайт), Вы могли скрыть весь свой HTML через JavaScript...