Lavsa, Rich
Rich_Lavsa at pghcorning.com
Thu May 19 13:02:15 CDT 2005
Hello all,
I came from an Access world, and so far have been mostly self taught on
the SQL Server side of things.
One thing that I used to do in Access from time to time is have 2 fields
that were returned in a query, however for reporting purposes, sometimes
it was determined that one or the other was to be used depending on a
condition. This was easy in Access as it allowed you to use an IIF()
statement and actually use the value of another field inline with each
record. Now I'm trying to do the same in the following query in SQL
Server.
In the Middle of the Select portion, you will see
CustomerAddress.Sys_address_1 and at the end you will see
NoOrderAddress.Address1 AS NoOrdAdd1. What can happen in this scenario
is that sometimes the information is brought back from our ERP system in
which the Order Number will return all the pertant information, however
in very few cases I had to allow the entry of data even though there
wasn't an Order number to refer to, so the information on a NO ORDER
would be manually entered. So what I hope to achieve is to return the
value CustomerAddress.Sys_address_1 if RGA.PCCOrderNo <> 'No Order' else
return NoOrderAddress.Address1 AS NoOrdAdd1. I tried the ISNULL
approach, Case statement, and an IF statement neither of which worked in
returning a value that is inline, however all worked in testing for the
condition and returning text but none acutally returned the field value
when I ask it to return NoOrderAddress.Address1.
Any help would be greatly appreciated.
SELECT
RGA.RGANo, RGA.RGADate,
RGA.ContactFName,
RGA.ContactlName,
isnull(RGA.ContactFName,'') + ' ' + isnull(RGA.ContactlName,'') as
ContactName,
CustomerAddress.CUSTOMER_NAME AS CompanyName, RGA.PCCOrderNo,
UsedOrderInfo.CUSTOMER_REFERENCE AS CustomerRef, RGA.Freight,
CASE rga.restockfee
when 0 then 'No'
when 1 then 'Yes'
else 'N/A' End as Restockfee,
RGA.RGANotes, RGA.FreightStatus, PCCRep.FirstName,
PCCRep.LastName, lkpReason.ReasonDesc, lkpWarehouse.Companyname as
whseCompanyName,
lkpWarehouse.Address1 as whseAddress1, lkpWarehouse.Address2 as
whseAddress2, lkpWarehouse.City as whseCity,
lkpWarehouse.State as whseState, lkpWarehouse.Zip as whseZip, RGA.RGAId,
dbo.NoOrderAddress.Address1 AS NoOrdAdd1,
CustomerAddress.SYS_ADDRESS_1,
CustomerAddress.SYS_ADDRESS_2,
CustomerAddress.SYS_POSTAL_CODE,
CustomerAddress.SYS_CITY,
CustomerAddress.SYS_STATE,
UsedOrderInfo.CUSTOMER_NUMBER AS CompanyNumber,
lkpWarehouse.Location, RGA.ReasonForCredit, RGA.DetailsOfCredit,
RGA.Approved,
UsedOrderInfo.DELIVERY_ADDRESS_CODE, UsedOrderInfo.INVOICE_ADDRESS_CODE,
CustomerAddress.ADDRESS_CODE, RGA.RequestedCredit, lkpStatus.StatusDesc,
NoOrderAddress.CompanyName AS NoOrdCoName,
NoOrderAddress.Address1 AS NoOrdAdd1,
NoOrderAddress.Address2 AS NoOrdAdd2, NoOrderAddress.City AS NoOrdCity,
NoOrderAddress.State AS NoOrdState,
NoOrderAddress.ZipCode AS NoOrdZip, NoOrderAddress.PhoneNumber AS
NoOrdPhone,
NoOrderAddress.FaxNumber AS NoOrdFax,
NoOrderAddress.DiscrepancyNotes AS NoOrdNotes
FROM
dbo.lkpReason RIGHT OUTER JOIN
dbo.lkpWarehouse RIGHT OUTER JOIN
dbo.PCCRep RIGHT OUTER JOIN
dbo.NoOrderAddress RIGHT OUTER JOIN
dbo.RGA ON dbo.NoOrderAddress.RGAID =
dbo.RGA.RGAId ON dbo.PCCRep.PCCRepID = dbo.RGA.PCCRepID ON
dbo.lkpWarehouse.WarehouseID = dbo.RGA.WarehouseID
ON dbo.lkpReason.reasonID = dbo.RGA.ReasonID LEFT OUTER JOIN
dbo.UsedOrderInfo LEFT OUTER JOIN
OPENQUERY(RENCS,
'select Address_code, Customer_number,
sys_Postal_code, Customer_Name, sys_address_1, sys_address_2, sys_state,
sys_city from fin_prod.CUSTOMER_ADDRESSES')
CustomerAddress ON
dbo.UsedOrderInfo.DELIVERY_ADDRESS_CODE = CustomerAddress.ADDRESS_CODE
AND
dbo.UsedOrderInfo.CUSTOMER_NUMBER =
CustomerAddress.CUSTOMER_NUMBER ON
dbo.RGA.PCCOrderNo =
dbo.UsedOrderInfo.ORDER_NUMBER LEFT OUTER JOIN
dbo.lkpStatus ON dbo.RGA.RGAStatus =
dbo.lkpStatus.StatusID
Where
RGA.PCCOrderNo = 'No Order'
Rich