SQL Server:case / if else -select并仅在表中存在时应用函数

时间:2016-07-25 13:46:46

标签: sql sql-server sql-server-2008 if-statement case

我有以下动态查询,它使用UDF针对产品为每个account_id创建一个透视表。我需要在执行UDF之后添加空格,具体取决于与特定表匹配的DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.A_NAME) FROM TEST_11 c FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = 'SELECT account_id, ' + @cols + ' INTO TEST_DETAIL from ( select account_id , dbo.make_table(apple,ball,cat,dog) AS newvalue ,a_name from test_sample ) x pivot ( MAX(newvalue) for a_name in (' + @cols + ') ) p ' execute(@query) 。这完全正常,并返回图像中的第二个表,我只想添加一些条件,它检查其他表中的帐户ID,然后从UDF输出空格,例如 - 帐户ID in如果pivot中的account_id匹配test_oncontract中存在的id,那么pivot将匹配test_rev中存在的id然后匹配2个空格

make_table

下面的图片显示了 when exists (select account_id from tbl_noR6) then dbo.make_sam_indicator112(apple,ball,cat,dog) + space(2) + ''cc'' when exists (select account_id from tbl_acct) then dbo.make_sam_indicator112(apple,ball,cat,dog) + space(3) + ''pp'' when exists (select account_id from test_NA) then dbo.make_sam_indicator112(apple,ball,cat,dog) + space(4) + ''no'' end) as newvalue, a_name from CRS_PRODLINE ) x pivot ( MAX(newvalue) for a_name in (' + @cols + ') ) p ' udf如何将第一个表格转换成第二个表格,只是从第一个表格的每个列名称中获取首字母

enter image description here

我能够调用我的函数并使用select添加所需的空格。 但case语句只执行第一个条件,我无法从其他表中获取记录。如何根据条件而不是case语句来实现取决于所有四个条件的数据。以下是我目前使用的代码:

DECLARE @cols AS NVARCHAR(MAX),     @query AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct',' + QUOTENAME(c.a_name)             来自CRS_PRODLINE c             FOR XML PATH(''),TYPE             ).value('。',' NVARCHAR(MAX)')         ,1,1,'&#39)

设置@query =' SELECT account_id,' + @cols +' INTO TEST_DETAIL来自             (选择account_id,                     (案件                     何时存在(从[dbo]中选择account_id。[TEST_R6])                     然后                     dbo.make_sam_indicator112(苹果,球,猫,狗)+空格(1)+'' rr''

<p-calendar showAnim="slideDown" 
            id="calendar" 
            [showIcon]="true 
            [(ngModel)]="myDate" 
            (blur)="onBlurMethod($event)">
</p-calendar>

执行(@query)

0 个答案:

没有答案