SQL: Error, Expression services limit reached?

"Внутренняя ошибка: Достигнут лимит служб выражений. Please look for potentially complex expressions in your query, and try to simplify them."

Кто-нибудь сталкивался с этим раньше и нашел хорошее обходное решение?

Мне удалось обойти эту проблему, разделив мой SQL-запрос на две части и записав первый SQL-запрос select в временную таблицу, а во второй части новый SQL-запрос select выбирает из временной таблицы и использует множество операторов CROSS APPLY для вычисления каскадных вычисляемых столбцов.

Это пример того, как выглядит вторая часть, но я использую гораздо больше операторов Cross Apply для создания новых столбцов, которые являются вычислениями:

Select * from #tempTable        

cross apply
    (
      select HmmLowestSalePrice =
       round(((OurSellingPrice + 1.5) / 0.95) - (CompetitorsLowestSalePrice) + 0.08, 2)
    ) as HmmLowestSalePrice 

cross apply
    (
      select checkLowestSP =
       case 
        when adjust = 'No Room' then 'No Room'
        when OrginalTestSalePrice >= CompetitorsLowestSalePrice then 'Minus'
        when OrginalTeslSalePrice < CompetitorsLowestSalePrice then 'Ok'
      end
) as checkLowestSP  

cross apply
    (
        select AdjustFinalNewTestSP =
        case
        when FinalNewTestShipping < 0 Then  NewTestSalePrice - (FinalNewTestShipping)
        when FinalNewTestShipping >= 0 Then NewTestSalePrice
        end
) as AdjustFinalNewTestSP

cross apply
    (
      select CheckFinalSalePriceWithWP  =
      case 
        when round(NewAdminSalePrice, 2) >= round(wholePrice, 2) then 'Ok'

        when round(NewAdminSalePrice, 2) < round(wholePrice, 2) then 'Check'
      end
    ) as CheckFinalPriceWithWP 


DROP TABLE #tempTable

Моя цель - поместить это в sql отчет, и он работает нормально, если есть только 1 пользователь, поскольку #tempTable создается и удаляется в одном и том же выполнении, и результаты отображаются в отчете правильно. Но в будущем, если будет несколько пользователей, я опасаюсь, что они будут писать в одну и ту же #tempTable, что повлияет на результаты?

Я пробовал поместить это в хранимые процедуры, но все равно получаю сообщение об ошибке выше.

7
задан Standage 20 December 2011 в 23:48
поделиться