0

我有一个返回完整数据集的 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 , Deductible, Copay
L6 --> EMP , EmployeeNumber2, Column1, Column2, Col3, Charges1, Charges 5。 ..
L7 --> INS,Insurance1,InsurancePmt1
L8 --> INS,Insurance2,InsurancePmt2
L9 --> PMT, 免赔额, 共付额

对于数据集中返回的每个“员工编号”,依此类推。
文件的格式/布局是一项要求。我正在使用 MSSQL,但对文件的后勤工作感到困惑。是否可以使用 sql 来实现我想要实现的目标?如果是这样,有人可以指出我正确的方向吗?

4

1 回答 1

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您需要显示的行数(等于 number of CASEs)。

CASE写你的文件结构。

于 2012-09-28T07:36:05.557 回答