2014-10-29 56 views
1

第一次在這裏,所以我沒有看到這樣的問題,所以我希望你能幫助我。在一列中的SQL中添加結果列

我正在試圖將2列添加到查詢結果。

  • 如果aa.actionid = '123',在一個叫test1列返回結果。

  • 如果aa.actionid = '5',然後創建一個名爲這把價格每噸在該列列或者叫做test 1test 2

這是我到目前爲止所。我不確定這是否正確:

SELECT CO.INVOICE_PREFIX 
    ,C.CUSTOMER_NAME 
    ,S.SITE_NAME 
    ,W.DESCRIPTION 
    ,AA.PER_TON_PRICE 
    ,AA.ACTION_ID 
    ,AA.APPLICABLE_ACTION_ID 
    ,OI.VALID_UNTIL 
    ,CON.END_DATE 
    ,CC.DESCRIPTION 
    ,(case when aa.actionid = '123' then aa.per_ton_price Test1 
    ,(case when aa.actionid = '5' then) aa.per_ton_price test2 

FROM CUSTOMER C 
JOIN SITE S ON C.CUSTOMER_ID = S.CUSTOMER_ID 
JOIN CONTRACT CON ON C.CUSTOMER_ID = CON.CUSTOMER_ID 
JOIN SITE_ORDER SO ON SO.SITE_ID = S.SITE_ID 
JOIN COMPANY_OUTLET CO ON SO.COMPANY_OUTLET_ID = CO.COMPANY_OUTLET_ID 
JOIN ORDER_ITEM OI ON OI.ORDER_ID = SO.SITE_ORDER_ID 
JOIN PRODUCT P ON OI.PRODUCT_ID = P.PRODUCT_ID 
JOIN APPLICABLE_ACTION AA ON AA.ORDER_ITEM_ID = OI.ORDER_ITEM_ID 
JOIN COMPETITIVE_CONDITION CC ON CC.COMPETITIVE_CONDITION_ID = OI.COMPETITIVE_CONDITION_ID 
LEFT JOIN WASTE W ON W.WASTE_ID = AA.WASTE_ID 
JOIN ACTION A ON AA.ACTION_ID = A.ACTION_ID 
WHERE AA.ACTION_ID IN ('123','5') 
AND P.PRODUCT_ID='2' 
AND OI.VALID_UNTIL >= GETDATE() 

回答

2

您將始終需要爲所有行返回兩列。你可以做的是「未使用」列(取決於行數據)映射到一個默認值,比如空,如:

,case when aa.actionid = '123' then aa.per_ton_price else null end Test1 
,case when aa.actionid = '5' then aa.per_ton_price else null end test2 
1

數據庫只會返回一個表,所以,如果你認爲關於表格的概念,可能一行的列數與其他列不同?可能不會。所以你真正想要做的是將特定列的值設置爲null,而不是根本不輸出該列。