Sql 返回超出范围结果的日期分隔符
我有一个相当复杂的问题。其中一部分用where声明进行界定,排除出院日期大于90天前的结果 原始表格中的日期格式为2017-09-22 选择如下所示的值Sql 返回超出范围结果的日期分隔符,sql,postgresql,Sql,Postgresql,我有一个相当复杂的问题。其中一部分用where声明进行界定,排除出院日期大于90天前的结果 原始表格中的日期格式为2017-09-22 选择如下所示的值 to_char("public".visit.visit_admit_date, 'MMDDYYYY') AS "Visit or Admit Date", to_char("public".visit.visit_disch_date, 'MMDDYYYY') AS "Discharge Date", WHERE exists ( SE
to_char("public".visit.visit_admit_date, 'MMDDYYYY') AS "Visit or Admit Date",
to_char("public".visit.visit_disch_date, 'MMDDYYYY') AS "Discharge Date",
WHERE
exists ( SELECT distinct on ("public".visit.visit_id) "public".procedure_group_cpt_code.pgrpcpt_code::text
FROM "public".visit
FULL OUTER JOIN "public".patient_procedure
ON "public".visit.visit_id = "public".patient_procedure.pproc_visit_num
FULL OUTER JOIN "public".procedure_desc_master_codes
ON "public".patient_procedure.pproc_cpcode = "public".procedure_desc_master_codes.pdescm_id
FULL OUTER JOIN "public".procedure_group_cpt_code
ON "public".procedure_group_cpt_code.pgrpcpt_pdescm_id = "public".procedure_desc_master_codes.pdescm_id
GROUP BY "public".visit.visit_id, "public".procedure_group_cpt_code.pgrpcpt_code
ORDER BY "public".visit.visit_id )
AND "public".visit.visit_stay_type = '1' OR "public".visit.visit_stay_type ='2'
我认为这最后一行是按日期划界的正确方法
AND "public".visit.visit_disch_date > (now() - interval '90 day' )
几年前,我的约会远远超出了范围
如果有人需要查看整个查询的更多内容,我将发布它。它相当大
也很高兴包括任何人可能要求的更多信息 问题在于or。在以下情况下使用:
其他一些建议:
学习使用表格别名。
exists子查询中不需要select distinct on。
ORDERBY在子查询中几乎不合适。
很少需要完全外部联接。
问题在于手术室。在以下情况下使用:
其他一些建议:
学习使用表格别名。
exists子查询中不需要select distinct on。
ORDERBY在子查询中几乎不合适。
很少需要完全外部联接。
同意IN的样式优于OR here,但如果您希望在将来的查询中使用OR,例如where IN不适合,因为您的OR将在不同的列上操作,则应使用括号对条件进行分组,如下所示:
AND (
"public".visit.visit_stay_type = '1'
OR "public".visit.visit_stay_type ='2')
AND "public".visit.visit_disch_date > (now() - interval '90 day' )
同意IN的样式优于OR here,但如果您希望在将来的查询中使用OR,例如where IN不适合,因为您的OR将在不同的列上操作,则应使用括号对条件进行分组,如下所示:
AND (
"public".visit.visit_stay_type = '1'
OR "public".visit.visit_stay_type ='2')
AND "public".visit.visit_disch_date > (now() - interval '90 day' )
成功了!!!谢谢你,我可能永远也不会发现我会记住这一点。它是否因为日期语句只应用于其中一个而产生问题?奇怪的是,我试着用你的其他建议来处理这个问题,但它基本上是按原样工作的。我正在使用的数据库是一个热堆。我认为这个查询有300行长,在这里看到的内容之外还有8个完整的外部连接。@JasonDossett。日期仅适用于2值。谢谢!一旦你指出错误,事实上它看起来很明显。这是有效的!!!谢谢你,我可能永远也不会发现我会记住这一点。它是否因为日期语句只应用于其中一个而产生问题?奇怪的是,我试着用你的其他建议来处理这个问题,但它基本上是按原样工作的。我正在使用的数据库是一个热堆。我认为这个查询有300行长,在这里看到的内容之外还有8个完整的外部连接。@JasonDossett。日期仅适用于2值。谢谢!一旦你指出错误,事实上它看起来很明显。