Function 用于在SQL Server 2012中搜索两个表的函数

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') (

我需要创建一个返回列的函数,但必须根据参数在两个不同的表中搜索该列

如果参数值为“F”,函数将在表“A”中查找,否则将在表“B”中搜索该列

有可能这样做吗

我试图以不同的方式创建函数,但没有使其正常工作

多谢各位

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!非常感谢你的回答。您的解决方案非常有效。再次感谢。