2016-12-27 3 views
-17

, если условие равно верно, то я хотел бы умножение (od.price * od.kilo), а затем принести другие поля ещеПодзапрос возвратил более 1 значения. неправильно, если заявление

Я хотел бы умножение (od.quant * od.price), а затем принести другие поля

CREATE PROC GET_ORDER_ACCOUNT_DETAILS @ORDERID INT

AS 
BEGIN 
     IF((SELECT calcType FROM orderDetailsTBL od WHERE od.orderID = @ORDERID) = 'K') 
      BEGIN 
      SELECT 
      (SELECT od.price * od.kilo FROM orderDetailsTBL od) as "AMOUNT", 

      od.quant as "QUANTITY" , 
      od.kilo as "KILO" , 
      od.price as "PRICE" , 
      od.calcType as "UNIT" , 
      p.prodName as "NAME" , 
      od.recivedID as "RECIVED" 
FROM orderAccTBL oa 
JOIN orderDetailsTBL od ON od.orderID = oa.orderID 
JOIN productTBL p ON p.prodID = od.productID 
WHERE 
     oa.orderID = @ORDERID 
        END 
      ELSE 

      BEGIN 
      SELECT 
      (SELECT od.quant * od.price FROM orderDetailsTBL od) as "AMOUNT", 
      od.quant as "QUANTITY" , 
      od.kilo as "KILO" , 
      od.price as "PRICE" , 
      od.calcType as "UNIT" , 
      p.prodName as "NAME" , 
      od.recivedID as "RECIVED" 
FROM orderAccTBL oa 
JOIN orderDetailsTBL od ON od.orderID = oa.orderID 
JOIN productTBL p ON p.prodID = od.productID 
WHERE 
     oa.orderID = @ORDERID 
      END 

    END  
+3

Вам нужно объяснить, в чем ваша проблема, и задать конкретный вопрос. – bwoogie

ответ

1

Вам не нужно какой-либо из этих IF..ELSE заявлений или даже подзапросов в ваш выбор, что вы после, может быть достигнуто с помощью следующего простого запроса:

CREATE PROC GET_ORDER_ACCOUNT_DETAILS 
@ORDERID INT 
AS 
BEGIN 
SET NOCOUNT ON; 

    SELECT 
      CASE 
       WHEN od.calcType = 'K' 
       THEN od.price * od.kilo 
       ELSE od.quant * od.price 
      END   as [AMOUNT] 
     ,od.quant  as [QUANTITY] 
     ,od.kilo  as [KILO] 
     ,od.price  as [PRICE] 
     ,od.calcType as [UNIT] 
     ,p.prodName as [NAME] 
     ,od.recivedID as [RECIVED] 
    FROM  orderAccTBL  oa 
    INNER JOIN orderDetailsTBL od ON od.orderID = oa.orderID 
    INNER JOIN productTBL  p ON p.prodID = od.productID 
    WHERE oa.orderID = @ORDERID 

END 
+0

неправильный синтаксис рядом с @ORDERID –

+0

@MohamedHmmam Я только что проверил запрос в компиляторе и не обнаружил никаких синтаксических ошибок, внесли ли вы какие-либо изменения в запрос перед его тестированием? –

+0

спасибо, это была небольшая ошибка, теперь ее работа прекрасна большое спасибо, и извините за мои плохие английские навыки –

Смежные вопросы