我继承了 PostgreSQL 9.2.4 数据库,虽然我在 SQL Server 方面拥有相当广泛的背景,但我在解决遇到的问题时遇到了一些麻烦。
我有一张表,其中包含三个字段(除其他外)。“age_years”、“age_months”和“age_days”。如果表中的某个人是 2 个月大或更小,那么他们在“age_days”字段中的值是他们的天数。如果他们不到 3 岁但超过 2 个月,那么他们在“age_months”字段中有一个值。任何超过 3 岁且在“age_years”字段中有值的东西。
给定记录仅在这三个字段之一中具有非零值。例如,永远不会出现 age_days 和 age_years 都具有非零值的情况。这些记录代表医院就诊,年龄是就诊时个人的年龄。
在另一个表中,我有几个字符可变 [] 字段,最多 20 个值。它们是 ref_age_cd、ref_age、ref_clow 和 ref_chigh。这是该表中的示例记录(仅出于显示目的,值少于最大值):
对于下面的丑陋线条,我深表歉意。我似乎无法让它们以非常易读的条件格式化。
ref_age_cd | ref_age | ref_clow | ref_chigh
[D,D,D,M,M,Y,Y,Y] [1,4,15,2,7,13,18,199] [9.1,9.8,5.4,5.5,7.9,5.1,4.8,4.8] [27.1,27.8,16.4,15.8,15.9,11.1,10.8,10.8]
ref_age_cd 字段确定您正在查看的年龄类型(天、月或年)。ref_age 确定值,然后根据这两个值,您可以从 ref_clow 和 ref_chigh 字段中获取低值和高值。例如,如果某人在 age_months 字段中有 13,那么您将查看 ref_age_cd 并在数组中找到“M”值,然后查看相应的 ref_age 字段并找到低于年龄月字段。所以数组索引将是 5。然后你在 ref_clow 和 ref_chigh 字段中获取第五个值作为低值和高值。(分别为 7.9 和 15.9)
如果某人 10 天大,则要查看的数组索引为 2(ref_age_cd 为 'D' 和 ref_age 为 4)。这将指示 9.8 和 27.8 的低值和高值。如果他们是 80 岁,则索引将为 7(“Y”的 ref_age_cd 和 18 的 ref_age)。4.8 和 10.8 的低值和高值。
我只是不知道如何编程,所以当我从表 A(带有age_days、age_months 或 age_years 字段)加入参考表时,我可以为 ref_clow 和 ref_chigh 提取正确的数组索引。
我还应该提到,我无法对此数据库进行任何更改。我需要用我得到的东西来完成这项工作。