Microsoft Visual Studio Создание временных таблиц

Добрый день, я пытаюсь создать набор данных в SSRS, к сожалению, мне нужно создать временную таблицу, чтобы создать свой отчет. Мой код выглядит следующим образом

create table #Tax_Admin (AWD varchar (255), Name varchar(255))  
insert into #Tax_Admin  
values  ('MDSTM','Agent 1'),
        ('MDSAK','Agent 2'),    
        ('ITDPM','Agent 3'),    
        ('MASEL','Agent 4'),    
        ('ITDEK','Agent 5'),    
        ('ITDFM','Agent 6');    

with #transactions_workingwith  
as  
(   
SELECT distinct 
      [TRANSACTION_ID]  

  FROM [mmcenvsqlprd01].[MOMDWL1].[ibrststdatEQ].[MOVEMENT_DATA] A

    where   

  (a.TO_QUEUE like '%FINTAX%'   
  OR  a.TO_QUEUE like '%TAXQ%'  
  OR  a.TO_QUEUE like '%TAXCERT%')  

  and a.TO_STATUS_DATE >= '2017-06-01') 



  , User_Movements as   

  ( 


  Select    
  a.TRANSACTION_ID  
 ,a.POLICY_NUMBER   
  ,a.USER_ID    
  ,a.BILLING_CYCLE_ID   
  ,a.TRANSACTION_TYPE   
  ,a.FROM_STATUS    
  ,a.TO_STATUS  
  ,a.TO_STATUS_DATE 
  ,a.TO_QUEUE   
  , ROW_NUMBER() over (Partition by a.TRANSACTION_ID order by a.TO_STATUS_DATE) as User_Movement_Nr 

  ,case when   (a.TO_QUEUE like '%FINTAX%'  
  OR  a.TO_QUEUE like '%TAXQ%'  
  OR  a.TO_QUEUE like '%TAXCERT%') then 'Tax Queue' else 'Other Queue' end as Queue_Taype   

  FROM [mmcenvsqlprd01].[MOMDWL1].[ibrststdatEQ].[MOVEMENT_DATA] A  
  inner join #transactions_workingwith b on a.TRANSACTION_ID Collate SQL_Latin1_General_CP1_CI_AS = b.TRANSACTION_ID Collate SQL_Latin1_General_CP1_CI_AS   

    where   

   a.TO_STATUS_DATE >= '2017-06-01')    


   Select distinct  

     a.TRANSACTION_ID   
     ,a.POLICY_NUMBER
     ,convert(varchar,a.TO_STATUS_DATE,112) + isnull(c.EMPLOYEE_NR,d.EMPLOYEE_NR)  as EmployeeKey ---Why do we need this empoyee key?
  ,a.USER_ID    
  ,isnull(c.EMPLOYEE_NR,d.EMPLOYEE_NR) as Emplyee_Nr    
    ,f.[BusinessArea]   



  ,a.TRANSACTION_TYPE   
  ,a.FROM_STATUS    
  ,a.TO_STATUS  
  ,b.TO_STATUS as Next_Status   
  ,b.USER_ID as Next_Status_User    
  ,isnull(e.Name,'Other') as Tax_Admin_Name 
  ,case when b.TO_STATUS like '%FAIL%' THEN 1 ELSE 0 END AS Is_Fail 
    ,case when b.TO_STATUS like '%INFO%' THEN 1 ELSE 0 END AS Is_Info   
     ,case when b.TO_STATUS like '%TRAIN%' THEN 1 ELSE 0 END AS Is_Train

     ,
     case when b.TO_STATUS like '%FAIL%' THEN 1 ELSE 0 END
     + case when b.TO_STATUS like '%INFO%' THEN 1 ELSE 0 END
     + case when b.TO_STATUS like '%TRAIN%' THEN 1 ELSE 0 END as Returned

  ,a.TO_STATUS_DATE 
  ,a.TO_QUEUE   
  ,a.User_Movement_Nr   
  ,a.BILLING_CYCLE_ID   
  ,1 as Movement    

   from User_Movements a    
   inner join User_Movements b 
   on a.TRANSACTION_ID = b.TRANSACTION_ID and  a.User_Movement_Nr + 1 = b.User_Movement_Nr  
   left  JOIN [mmcenvsqlprd01].momdwl1.ibrststcnfEQ.IBRS_USER_INFO c 
   on a.USER_ID Collate SQL_Latin1_General_CP1_CI_AS = c.USER_ID Collate SQL_Latin1_General_CP1_CI_AS   
   left  JOIN [mmcenvsqlprd01].momdwl1.ibrststcnfWealth.IBRS_USER_INFO d 
   on a.USER_ID Collate SQL_Latin1_General_CP1_CI_AS     = d.USER_ID Collate SQL_Latin1_General_CP1_CI_AS       
   left join #Tax_Admin e on b.USER_ID Collate SQL_Latin1_General_CP1_CI_AS  = e.AWD Collate SQL_Latin1_General_CP1_CI_AS       
   inner join [mmcenvsqlbi01].[Master_Data].[Trans].[Employee_Snapshot] f 
   on convert(varchar,a.TO_STATUS_DATE,112) + isnull(c.EMPLOYEE_NR,d.EMPLOYEE_NR) Collate SQL_Latin1_General_CP1_CI_AS = f.[EmployeeKey]     Collate SQL_Latin1_General_CP1_CI_AS   
   where a.Queue_Taype = 'Tax Queue'

   drop table #Tax_Admin

Как мне перейти к переносу этого кода в SSRS? Я попробовал With Пункт, и это не работает. Я попытался создать пустую таблицу и затем обновить информацию, которая не сработала. Может кто-нибудь, пожалуйста, помогите мне?

1 ответ

Решение

В чем проблема с созданием временной таблицы в SSRS? Я провел быстрый тест, чтобы убедиться, что вы можете сделать это в SSRS 2012, и похоже, что он работает нормально, например, мой набор данных определен как:

CREATE TABLE #temp(id INT, name VARCHAR(10));
INSERT INTO #temp SELECT 1, 'Harry';
INSERT INTO #temp SELECT 2, 'Megan';
SELECT * FROM #temp;

Какую же ошибку вы получаете, когда пытаетесь сделать это в SSRS?

Если вы не можете заставить это работать, вы можете создать хранимую процедуру (без параметров) и просто вставить в нее свой сценарий, затем использовать Query Type = Stored Процедура и выбрать тот, который вы только что создали в SSRS.

Наиболее распространенная проблема с использованием WITH когда ваше предыдущее утверждение не было завершено ; правильно, но в вашем сценарии это не так? Люди часто правы ;WITH обойти эту проблему.

Вы можете попробовать использовать табличную переменную, то есть изменить #Tax_Admin на @Tax_Admin и DECLARE это как TABLE,

Другие вопросы по тегам