2013-05-30 3 views
0

Попытка выяснить, как преобразовать целочисленные и десятичные столбцы в отрицательные в рамках выражений выбора. Любая помощь оценивается.Преобразование в отрицательное значение во время выбора

Begin 
    Select 
    OrderInvoiceHeader.Invoice_int As [Invoice #], 
    CustomerBillTo.BillToCustomerName As [Customer name], 
    OrderInvoiceHeader.Invoice_date As [Invoice date], 
    Salesmen.SalesmanName As [Salesman], 
    (Select 
     Cast(Round(SUM(BaleInventory.NetWeight_dec), 0) As int) 
     from dbo.BaleInventory 

     Where dbo.BaleInventory.BaleNumber In  
     (Select OrderInvoiceBales.BaleNumber 
     from OrderInvoiceBales 
     Where OrderInvoiceBales.Invoice_int = OrderInvoiceHeader.Invoice_int)) 
     as [Lbs invoiced], 

Здесь нужно преобразовать InvoiceAdjustment_dec к отрицательным, если OrderInvoiceHeader.InvoiceType = "3", то же самое относится и к другим доллар значения


OrderInvoiceHeader.InvoiceAdjustment_dec As [Adjustment $], 
OrderInvoiceHeader.InvoiceFreight_dec As [Freight $], 
OrderInvoiceHeader.InvoiceMerchandise_dec As [Merch $], 
OrderInvoiceHeader.InvoiceTotal_dec As [Total $], 
OrderInvoiceHeader.FreightPaid_dec As [Frt paid $] 


From OrderInvoiceHeader 

    Left Outer Join dbo.CustomerBillTo 
    On OrderInvoiceHeader.BillToCustomer_int = CustomerBillTo.BillToCustomer_int 

    Left Outer Join dbo.Salesmen 
    On OrderInvoiceHeader.Salesman_int = Salesmen.Salesman_int 

    Where 
    OrderInvoiceHeader.Invoice_date >= @From_date and 
    OrderInvoiceHeader.Invoice_date <= @To_date 

    Order By OrderInvoiceHeader.Invoice_int 
End 

ответ

2

Использовать CASE выражение:

SELECT ..... --all your other columns here 
     CASE WHEN OrderInvoiceHeader.InvoiceType = '3' 
     THEN -1*InvoiceAdjustment_dec 
     ELSE InvoiceAdjustment_dec END AS InvoiceAdjustment_dec 
+0

Я понимаю случай, отлично работает, когда Case последний в Select, но если я вставляю Case в середину Select (чтобы сохранить последовательность для целей сетки), тогда возникают синтаксические ошибки. –

+0

Извините, Ламак, моя ошибка в кодировании, все в порядке. Ценю вашу помощь. –

+0

@JamesHinson Нет проблем. Рад, что это помогло – Lamak