Alan Lawhon
lawhonac at hiwaay.net
Fri May 25 17:41:27 CDT 2012
I'm working my way through the exercises and examples in "Murach's SQL
Server 2008 for Developer's" book when I come to Figure 4-15 (page 151)
which has a very interesting example of how you can combine data from the
same table using the UNION keyword. (Here's the code for that example.)
USE AP
GO
SELECT InvoiceNumber, VendorName, '33% Payment' AS PaymentType,
InvoiceTotal AS [Invoice Total], (InvoiceTotal * 0.333) AS
Payment
FROM Invoices INNER JOIN Vendors
ON Invoices.VendorID = Vendors.VendorID
WHERE InvoiceTotal > 10000.00
UNION
SELECT InvoiceNumber, VendorName, '50% Payment' AS PaymentType,
InvoiceTotal AS [Invoice Total],
CONVERT(varchar, (InvoiceTotal * 0.5), 1) AS Payment
FROM Invoices INNER JOIN Vendors
ON Invoices.VendorID = Vendors.VendorID
WHERE InvoiceTotal BETWEEN 500 AND 10000.00
UNION
SELECT InvoiceNumber, VendorName, '100% Payment' AS PaymentType,
InvoiceTotal AS [Invoice Total], (InvoiceTotal * 1.0) AS
Payment
FROM Invoices INNER JOIN Vendors
ON Invoices.VendorID = Vendors.VendorID
WHERE InvoiceTotal < 500.00
ORDER BY PaymentType DESC, VendorName, InvoiceNumber
This UNION query calculates a payment based on what range the InvoiceTotal
happens to fall in.
Here are the fields from the first record of the result set.
InvoiceNumber: 509786
Vendorname: Bertelsmann Industry Services, Inc.
PaymentType: 50% Payment
Invoice Total: 6940.25
Payment: 3470.1250000
In the Invoices (base table) the "InvoiceTotal" field is defined as follows:
InvoiceTotal (money, not null)
I modified the code (slightly) from what is given in the book. In the
section of code that calculates a 50% payment, I used the CONVERT function
to try and modify the output display of the "Payment" calculated field. (I
wanted the calculated value of 3470.1250000 to display as character string
3,470.13 so that it looks more "money" like.) However, the CONVERT function
is not working as I expected.
Does anyone have an idea as to why the CONVERT function is not working as
expected?
TIA,
Alan C. Lawhon