根据查询结果创建平面文件

时间:2012-09-27 12:30:53

标签: sql ssis

我有一个SQL查询,它返回一个完整的数据集:例如

ID,EmployeeNumber,Column1,Col2,Col3,Col4,Insurance1,Insurance2,Charges1,.. Charges5 ... InsurancePmt1,InsurancePmt2,.. Deductible,Copay,.. Col70

我需要根据返回的数据集创建一个文件,文件应该具有以下结构:
L1 - > TR STATS ,TotalChgs,TotalEmployees ...
L2 - > EMP ,EmployeeNumber1,Column1,Column2,Col3,Charges1,Charges 5 ...
L3-> INS ,Insurance1,InsurancePmt1
L4 - > INS ,Insurance2,InsurancePmt2
L5 - > PMT ,免赔额,Copay
L6 - > EMP ,EmployeeNumber2,Column1,Column2,Col3,Charges1,Charges 5 ...
L7 - > INS ,Insurance1,InsurancePmt1
L8 - > INS ,Insurance2,InsurancePmt2
L9 - > PMT ,Deductible,Copay

对于数据集中返回的每个“员工编号”等等 文件的格式/布局是必需的。我正在使用MSSQL,但却难以接受文件的后勤工作。有可能做我想用sql实现的目标吗? 如果是这样,有人会指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解正确,但这是我的问题解决方案(可能不是最好的):

select case piv.rank_
 when 1 then 'L1--> ' + sel1.a + sel1.c 
 when 2 then 'L2--> ' + sel1.b + sel1.d
 when 3 then 'L3--> ' + sel1.a + sel1.b + sel1.d
 when 4 then 'L4--> ' + sel1.c + sel1.b + ' any data u need'
 when 5 then 'EmployeeNumber = ' + sel1.EmployeeNumber
 else 'nothing'  
 end as linesToFile, piv.rank_, sel1.EmployeeNumber
                from
       (
       select sel.a, sel.b, sel.c, sel.d, sel.EmployeeNumber from (
           SELECT 'data_1_1' a, 'data_1_2' b, 'data_1_3' c, 'data_1_4' d, '33333333' EmployeeNumber
           UNION ALL
           SELECT 'data_2_1' a, 'data_2_2' b, 'data_2_3' c, 'data_2_4' d, '44444444' EmployeeNumber
           UNION ALL
           SELECT 'data_3_1' a, 'data_3_2' b, 'data_3_3' c, 'data_4_4' d, '55555555' EmployeeNumber) sel
       ) sel1,
       (SELECT TOP 5 ROW_NUMBER() OVER (ORDER BY sel4.a ASC) AS rank_ from(SELECT '1' a
       UNION ALL
       SELECT '2' a
       UNION ALL
       SELECT '29' a
       UNION ALL
       SELECT '9' a
       UNION ALL
       SELECT '19' a
       UNION ALL
       SELECT '29' a) sel4) piv
order by EmployeeNumber, rank_;

sel1是您的表格,piv是用于生成rownum的表格(您可以在模式中使用某些表格,确保每行显示的行数超过您需要显示的行数Employee Number ),TOP 5每个EmployeeNumber需要显示的行数(等于CASEs的数量)。

CASE中编写文件结构。