Sql server 积分有值表函数

Sql server 积分有值表函数,sql-server,tsql,Sql Server,Tsql,多亏了本论坛的帮助,我才意识到使用值表函数可以使declare函数以某种方式工作,以便以后可以使用它创建视图。 我只是不知道如何把这些点连接起来。 valued table函数如下所示: USE [m_DEV] GO --SET ANSI_NULLS ON --GO --SET QUOTED_IDENTIFIER ON --GO --CREATE VIEW [dbo].[Entries] AS CREATE FUNCTION [Manual_COUNTRIES_2019]()

多亏了本论坛的帮助,我才意识到使用值表函数可以使declare函数以某种方式工作,以便以后可以使用它创建视图。 我只是不知道如何把这些点连接起来。 valued table函数如下所示:

USE [m_DEV]
GO

--SET ANSI_NULLS ON
--GO

--SET QUOTED_IDENTIFIER ON
--GO

--CREATE VIEW [dbo].[Entries] AS

    CREATE FUNCTION [Manual_COUNTRIES_2019]()
    RETURNS TABLE
    RETURN
        SELECT *
        FROM (       
       VALUES --risk_1
            (1,'AX'),(1,'AY'),(1,'AQ'),(1,'BQ')
            --risk_2 
            ,(2,'AA'),(2,'AI'),(2,'AX')
            -- @risk_3 
            ,(3,'QE'),(3,'QT')
            -- @risk_4 
            ,(4,'AA'),(4,'AB'),(4,'AS'),(4,'AZ')
            -- @risk_5 
            ,(5,'BB'),(5,'BC'),(5,'CD')
    
         ) AS X (RiskNum, Code);
       RETURN
     END;

    
    WITH Lead AS (
        SELECT 
            CASE 
                WHEN a.[10_2_1_Country] IN (SELECT Code from 1 ) THEN '0'   
                WHEN a.[10_2_1_Country] IN (SELECT Code from 2 ) THEN '0.5'   
                WHEN a.[10_2_1_Country] IN (SELECT Code from 3 ) THEN '1'   
                WHEN a.[10_2_1_Country] IN (SELECT Code from 4 ) THEN '2'   
                WHEN a.[10_2_1_Country] IN (SELECT Code from 5 ) THEN '3'
            END AS 'risk_country1'        
        FROM  [dbo].[Manual_Entries_19] a
    )
如何在“从1中选择代码”中将RiskNum、代码与连接 我尝试了不同的变化。我是否需要调用函数表:[Manual_COUNTRIES_2019]?但是怎么做呢


与创建功能[Manual_COUNTRIES_2019]相关的创建视图[dbo].[Entries]的位置在哪里我怀疑它是否能按目前的方式工作。

您可以从TVF中获得如下值:

CASE 
    WHEN a.[10_2_1_Country] IN (SELECT Code FROM dbo.Manual_COUNTRIES_2019() WHERE RiskNum = 1) THEN '0'   
    WHEN a.[10_2_1_Country] IN (SELECT Code FROM dbo.Manual_COUNTRIES_2019() WHERE RiskNum = 2) THEN '0.5'   
    WHEN a.[10_2_1_Country] IN (SELECT Code FROM dbo.Manual_COUNTRIES_2019() WHERE RiskNum = 3) THEN '1'   
    WHEN a.[10_2_1_Country] IN (SELECT Code FROM dbo.Manual_COUNTRIES_2019() WHERE RiskNum = 4) THEN '2'   
    WHEN a.[10_2_1_Country] IN (SELECT Code FROM dbo.Manual_COUNTRIES_2019() WHERE RiskNum = 5) THEN '3'
END AS 'risk_country1'

对象1是什么?如果确实有一个名为1的对象,则必须对其进行定界和标识,因为以数值开头的对象名称必须是[1]。不过,老实说,如果您*确实*有一些对象名为,1,2,3`,等等,我强烈建议您重命名它们;上面的SQL似乎不完整。另外,a作为手动输入的别名没有什么意义。ME19将更加清晰。我也希望您没有像Manual_Entries_1、Manual_Entries_2、Manual_Entries_18这样的表,因为这样您就有了一个严重的非规范化数据库,您也应该寻求修复。@Lamu,谢谢您的评论。不用担心,所有表的名称和值都经过了调整和更改,这样我就可以在堆栈溢出时显示它,而不会显示太多内容。所以,是的,他们实际上都有其他的名字。一切都很好。很漂亮,一切都很好,我现在可以查看桌子了。谢谢你的1:1!学会了很多!