2016-12-27 10 views
-17

真に等しい状態であれば、私は、乗算 (od.price * od.kiloを)好きで、その後、私は、乗算(* od.quant od.priceをしたいと思います他の分野、他 サブクエリーが2つ以上の値を返しました。声明

をもたらすならば、間違いました)、その後、あなたが何であるか、あなたの選択でこれらのIF..ELSE文、あるいはサブクエリのいずれかを必要としない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

をCREATEその他のフィールドに

をもたらしますその後、達成することができます次の簡単な選択クエリを使用してください:

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

ありがとう、それは小さな間違いだった、今仕事の細かい 非常にありがとう、私の悪い英語のスキルのために申し訳ありません –

関連する問題