Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Базы данных: SQL > Оператор AS некорректно ведет себя


Автор: CoGNaC 25.12.16, 14:49
Всем привет! Делаю запрос на MySQL57
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
      SELECT
        h.SalesOrderID as test,
        test *test as Test2
      FROM tb_salesOrderHeader h ;


Возвращается ошибка: "Error Code: 1054. Unknown column 'test' in 'field list'"

Как можно разрешить данную ситуацию,чтобы использовать новое название колонки?

Автор: Akina 25.12.16, 15:35
Нет. Поле выходного набора получает имя после формирования этого набора.

Будет лучше, если Вы озвучите задачу, а не свои попытки её решить.

Автор: CoGNaC 25.12.16, 15:49
Akina, спасибо за ответ. Мне нужно произвести расчет некоторого поля, после использовать это поле в других расчетах и в итоге сформировать таблицу полностью. Сами вычисления примерно выглядят так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
      SELECT
        CASE p.ProductTopCategory
        WHEN 'Clothing'
          THEN
            CASE WHEN d.OrderQty >= 10
              THEN 0.10
            WHEN d.OrderQty >= 5
              THEN 0.05
            ELSE 0
            END
        WHEN 'Accessories'
          THEN
            CASE WHEN d.OrderQty >= 10
              THEN 0.11
            WHEN d.OrderQty >= 5
              THEN 0.04
            ELSE 0
            END
        ELSE 0
        END AS Discount,
        d.OrderQty AS Quantity,
        p.ListPrice - Discount AS LineTotal
      FROM tb_salesOrderDetail d
        JOIN tb_salesOrderHeader h ON h.SalesOrderID = d.SalesOrderID
        JOIN tb_shipMethod shipMethod ON shipMethod.ShipMethodID = h.ShipMethodID
        JOIN bi_olap_22.product p ON d.ProductID = p.ProductID
        JOIN bi_olap_22.location l ON h.ShipToAddressID = l.AddressID ;


Ошибка в поле Discount....Можно конечно несколько раз использовать структуру case,но будет как-то не эстетично... Как в таких ситуациях обычно поступают?

Автор: Akina 25.12.16, 15:56
Обычно в ТАКИХ случаях в БД присутствует таблица, связывающая ProductTopCategory, OrderQty и Discount.

Автор: CoGNaC 25.12.16, 16:01
Akina спасибо! :) Тогда сформирую все поэтапно. Забыл добавить, это лабораторка в институте, поэтому как и все теоретическое от практики далеко :)

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)