表1
Resource Rank1 Rank2 Rank3 Rank4
Critical 3 3 6 12
High 8 8 12 24
表2
Name Issue SLC
RAM Critical Rank1
KIRAN Critical Rank2
BASS High Rank3
LOUT Critical Rank4
chinna High Rank1
lavanya Critical Rank3
babau High Rank4
rani Critical Rank2
预期会
Name Issue SLC values RESOURCEMISS
RAM Critical Rank1 3 Resource
KIRAN Critical Rank2 3 Resource
BASS High Rank3 12 Resource
LOUT Critical Rank4 12 Resource
chinna High Rank1 8 Resource
lavanya Critical Rank3 6 Resource
babau High Rank4 24 Resource
rani Critical Rank2 3 Resource
这不应该像[RESOURCEMISS]='Resoure'
答案 0 :(得分:0)
一个有点丑陋的解决方案,使用相关子查询来查找每个等级和问题:
SELECT
Name,
Issue,
SLC,
(SELECT CASE WHEN t2.SLC = 'Rank1' THEN t1.Rank1
WHEN t2.SLC = 'Rank2' THEN t1.Rank2
WHEN t2.SLC = 'Rank3' THEN t1.Rank3
WHEN t2.SLC = 'Rank4' THEN t1.Rank4 END
FROM table1 t1
WHERE t1.Resource = t2.Issue) "values"
FROM table2 t2;
我不知道您实际使用的是哪个数据库(MySQL或SQL Server),但考虑到当前的设计,它甚至可能无关紧要。您的架构未规范化,理想情况下,等级编号应该是某列中某个列的实际值,而不是列名本身。似乎@strawberry建议对您的设计进行一次重构,从而仅使用一个内部联接就可以更轻松地进行设计。
答案 1 :(得分:0)
请按照以下方式考虑解决方案(任何明显不同的做法都是在浪费您的时间):
awk -F'"' -v val="begin" '
BEGIN{
OFS=","
}
FNR==1{
if(val!="begin"){
print val?val:"NO"
}
val=""
}
/data-code/{
val=(val?val OFS:"")$(NF-1)
}
END{
print val?val:"NO"
}' *.txt
答案 2 :(得分:-1)