У меня есть вид, подобный этому
CREATE VIEW PEOPLE
AS
SELECT CustomerId, CustomerName FROM Customers
UNION ALL
SELECT EmployeeId, EmployeeName FROM Employees
UNION ALL
SELECT FriendId, FriendName From Friends
Теперь мне нужно добавить уникальный идентификатор для вида, потому что, конечно, я могу иметь CustomerId = 15
и EmployeeID = 15
* 1007.* Итак, уловка, которую я делаю, заключается в следующем
SELECT
CAST('1' + CAST(CustomerId AS VARCHAR(30)) AS INT) as UniqueCustomerId,
CustomerId, CustomerName FROM Customers
UNION ALL
SELECT
CAST('2' + CAST(EmployeeId AS VARCHAR(30)) AS INT) as UniqueEmployeeId,
EmployeeId, EmployeeName FROM Employees
UNION ALL
SELECT
CAST('3' + CAST(FriendId AS VARCHAR(30)) AS INT) as UniqueFriendId,
FriendId, FriendName From Friends
В любом случае, это приведение к varchar(30)
и обратно к int
является непроизводительным расходом, поскольку у меня много записей.лучший подход?