Då är frågan om man kan göra frågan smidigare än hur den ser ut just nu.
SELECT
/* Invoice */
tblInvoice.InvoiceID,
tblInvoice.StartDate,
tblInvoice.EndDate,
(tblInvoice.InvoicePrefix + '' + Convert(varchar, tblInvoice.InvoiceNumber)) AS InvoiceNumber,
tblInvoice.Km,
tblInvoice.KmPrice,
tblInvoice.HourPrice,
tblInvoice.GST,
/* DETAILS */
tblProducts.Type,
tblProducts.Quantity,
tblProducts.Description,
tblProducts.UnitPrice + (1 + CONVERT (money, (SELECT Setting FROM tblSetup WHERE (SetupID = 'ProduktAddering')))) AS UnitPrice,
dbo.LineTotal(tblProducts.Quantity, tblProducts.UnitPrice + (1 + CONVERT (money, (SELECT Setting FROM tblSetup AS tblSetup WHERE (SetupID = 'ProduktAddering')))), 0, tblInvoice.GST, 0) AS RowProductPrice,
/* Customer Details */
tblCustomers.Name AS bName,
tblCustomers.Contact AS bContact,
tblCustomers.Street AS bStreet,
tblCustomers.PostCode AS bPostCode,
tblCustomers.City AS bCity,
tblCustomers.State AS bState,
tblCustomers.Country AS bCountry,
tblCustomers.Phone AS bPhone,
tblCustomers.Fax AS bFax,
tblCustomers.Mobile AS bMobile,
tblCustomers.Email AS bEmail,
tblCustomers.Description AS bDescription,
/* Company Details */
tblCompany.Name AS aName,
tblCompany.Contact AS aContact,
tblCompany.Street AS aStreet,
tblCompany.PostCode AS aPostCode,
tblCompany.City AS aCity,
tblCompany.Email AS aEmail,
tblCompany.Phone AS aPhone,
tblCompany.Mobile AS aMobile,
tblCompany.MomsRegNr AS aMomsRegNr,
tblCompany.BankgiroNr AS aBankGiroNr,
tblCompany.PlusGiroNr AS aPlusGiroNr,
tblCompany.Fax AS aFax
FROM
tblInvoice
INNER JOIN tblCompany ON tblInvoice.CompanyID = tblCompany.CompanyID
INNER JOIN tblCustomers ON tblInvoice.CustomerID = tblCustomers.CustomerID
LEFT OUTER JOIN tblProducts ON tblInvoice.InvoiceID = tblProducts.InvoiceID
WHERE
tblInvoice.InvoiceID = @InvoiceID
UNION ALL
SELECT
/* Invoice */
tblInvoice.InvoiceID,
tblInvoice.StartDate,
tblInvoice.EndDate,
(tblInvoice.InvoicePrefix + '' + Convert(varchar, tblInvoice.InvoiceNumber)) AS InvoiceNumber,
tblInvoice.Km,
tblInvoice.KmPrice,
tblInvoice.HourPrice,
tblInvoice.GST,
Convert(varchar, tblInvoiceDetails.Day),
tblInvoiceDetails.Quantity,
tblInvoiceDetails.Description,
tblInvoice.HourPrice As UnitPrice,
dbo.LineTotal(tblInvoiceDetails.Quantity, tblInvoice.HourPrice, 0, tblInvoice.GST, 0) AS RowTotal,
/* Customer Details */
tblCustomers.Name AS bName,
tblCustomers.Contact AS bContact,
tblCustomers.Street AS bStreet,
tblCustomers.PostCode AS bPostCode,
tblCustomers.City AS bCity,
tblCustomers.State AS bState,
tblCustomers.Country AS bCountry,
tblCustomers.Phone AS bPhone,
tblCustomers.Fax AS bFax,
tblCustomers.Mobile AS bMobile,
tblCustomers.Email AS bEmail,
tblCustomers.Description AS bDescription,
/* Company Details */
tblCompany.Name AS aName,
tblCompany.Contact AS aContact,
tblCompany.Street AS aStreet,
tblCompany.PostCode AS aPostCode,
tblCompany.City AS aCity,
tblCompany.Email AS aEmail,
tblCompany.Phone AS aPhone,
tblCompany.Mobile AS aMobile,
tblCompany.MomsRegNr AS aMomsRegNr,
tblCompany.BankgiroNr AS aBankGiroNr,
tblCompany.PlusGiroNr AS aPlusGiroNr,
tblCompany.Fax AS aFax
FROM
tblInvoice
INNER JOIN tblCompany ON tblInvoice.CompanyID = tblCompany.CompanyID
INNER JOIN tblCustomers ON tblInvoice.CustomerID = tblCustomers.CustomerID
LEFT OUTER JOIN tblInvoiceDetails ON tblInvoice.InvoiceID = tblInvoiceDetails.InvoiceID
WHERE
tblInvoice.InvoiceID = @InvoiceID
Det känns inte som en toppenlösning trots allt. Hur borde jag tänka?