Function 用于在SQL Server 2012中搜索两个表的函数
我需要创建一个返回列的函数,但必须根据参数在两个不同的表中搜索该列 如果参数值为“F”,函数将在表“A”中查找,否则将在表“B”中搜索该列 有可能这样做吗 我试图以不同的方式创建函数,但没有使其正常工作 多谢各位Function 用于在SQL Server 2012中搜索两个表的函数,function,sql-server-2012,Function,Sql Server 2012,我需要创建一个返回列的函数,但必须根据参数在两个不同的表中搜索该列 如果参数值为“F”,函数将在表“A”中查找,否则将在表“B”中搜索该列 有可能这样做吗 我试图以不同的方式创建函数,但没有使其正常工作 多谢各位 CREATE FUNCTION [dbo].[getAlm] (@doc nvarchar(20), @type nvarchar(1)) RETURNS TABLE AS RETURN IF (@type = 'F') (
CREATE FUNCTION [dbo].[getAlm]
(@doc nvarchar(20), @type nvarchar(1))
RETURNS TABLE
AS
RETURN
IF (@type = 'F')
(
SELECT [Center]
FROM [BDX].[dbo].[TABLE_A]
WHERE [No_] = @doc
)
ELSE
(
SELECT [Center]
FROM [BDX].[dbo].[TABLE_B]
WHERE [No_] = @doc
);
在函数中,不能使用动态创建的语句,也不能使用变量作为表名。但您可以使用
联合所有人
:
DECLARE @SourceTable VARCHAR(100)='Table_A';
SELECT [Center]
FROM [BDX].[dbo].[TABLE_A]
WHERE @SourceTable='Table_A'
AND [No_] = @doc
UNION ALL
SELECT [Center]
FROM [BDX].[dbo].[TABLE_B]
WHERE @SourceTable='Table_B'
AND [No_] = @doc
这是针对你的情况
SELECT [Center]
FROM [BDX].[dbo].[TABLE_A]
WHERE @type='F'
AND [No_] = @doc
UNION ALL
SELECT [Center]
FROM [BDX].[dbo].[TABLE_B]
WHERE @type<>'F'
AND [No_] = @doc
选择[中心]
从[BDX].[dbo].[表A]
其中@type='F'
和[否]=@doc
联合所有
选择[中心]
从[BDX].[dbo].[表B]
其中@type'F'
和[否]=@doc
你好,Shnugo!非常感谢你的回答。您的解决方案非常有效。再次感谢。