我有一个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实现的目标吗? 如果是这样,有人会指出我正确的方向吗?
答案 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
中编写文件结构。