PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Truy vấn SQL Postgres để tóm tắt dữ liệu lỗi

Tôi hy vọng hiểu truy vấn cấu trúc và bảng của bạn và truy vấn bên dưới sẽ giúp bạn.

Bạn có thể xem bảng cấu trúc và kết quả truy vấn của tôi: dbfiddle

Không có tổng hợp:

with allow_category as (select unnest(array [
    'cpt',
    'drg',
    'modifiers',
    'secondaryDiagnosis',
    'principalDiagnosis',
    'secondaryProcedure',
    'observationhours',
    'dischargeStatus',
    'principalprocedure',
    'hcpcs',
    'professionalEvaluationManagement'
    ]::text[]) category)
select distinct ctextid,
                vbillid,
                initcap(kcy.key)                                                   as typeofcorrection,
                initcap(regexp_replace(kc.key, '([a-z])([A-Z])', '\1 \2', 'g'))    as errorpara,
                case when f ? 'from' then f -> 'from' ->> 'code' else '' end       as oldvalue,
                case when f ? 'to' then f -> 'to' ->> 'code' else f ->> 'code' end as newvalue
from qareport q
         cross join jsonb_each(q.codemap) as kc
         cross join jsonb_each(kc.value) as kcy
         join jsonb_array_elements(kcy.value) f on true
where kc.key in (select * from allow_category)
  and kcy.key in ('added', 'revised', 'removed')
  and (
        jsonb_array_length(kc.value -> 'added') > 0
        or jsonb_array_length(kc.value -> 'revised') > 0
        or jsonb_array_length(kc.value -> 'removed') > 0
    );

Với tổng hợp:

with allow_category as (select unnest(array [
    'cpt',
    'drg',
    'modifiers',
    'secondaryDiagnosis',
    'principalDiagnosis',
    'secondaryProcedure',
    'observationhours',
    'dischargeStatus',
    'principalprocedure',
    'hcpcs',
    'professionalEvaluationManagement'
    ]::text[]) category)
select distinct ctextid,
                vbillid,
                initcap(kcy.key)                                                   as typeofcorrection,
                initcap(regexp_replace(kc.key, '([a-z])([A-Z])', '\1 \2', 'g'))    as errorpara,
                case when f ? 'from' then f -> 'from' ->> 'code' else '' end       as oldvalue,
                case
                    when f ? 'to' then f -> 'to' ->> 'code'
                    else string_agg(f ->> 'code', ',')
                         over (partition by ctextid, vbillid, kcy.key, kc.key) end as newvalue
from qareport q
         cross join jsonb_each(q.codemap) as kc
         cross join jsonb_each(kc.value) as kcy
         join jsonb_array_elements(kcy.value) f on true
where kc.key in (select * from allow_category)
  and kcy.key in ('added', 'revised', 'removed')
  and (
        jsonb_array_length(kc.value -> 'added') > 0
        or jsonb_array_length(kc.value -> 'revised') > 0
        or jsonb_array_length(kc.value -> 'removed') > 0
    );



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chỉ tham gia một hàng trong bảng đã tham gia với postgres?

  2. Khôi phục sau khi có lỗi trong giao dịch

  3. Không thể trừ các ngày giờ có nhận biết bù trừ và bù trừ

  4. Tạo các thủ tục được lưu trữ với SQLAlchemy

  5. cách tính số ngày chỉ giữa hai ngày trong truy vấn sql postgres.