mysql - 如何从复杂的sql查询中知道源表

标签 mysql sql plsql

PFB 查询,我想知道在其中可以找到这些的实际表(pin_ein,engineer_pin,transaction_date,EFFECTIVE_WEEK)....

select count(1),pin_ein,engineer_pin,transaction_date,EFFECTIVE_WEEK from 
       (SELECT vw1.pin_ein, vw1.engineer_pin,
                               vw1.transaction_date, vw1.effective_week,
                               vw1.stores_tools_cost,
                               (vw1.stores_total_cost - vw1.stores_tools_cost
                               ) stores_total_cost_excl_tools,
                               vw1.item_count, vw1.stores_visit_count,
                               CASE
                                  WHEN vw1.stores_total_cost <
                                         5
                                     THEN vw1.stores_visit_count
                               END stores_low_cost_visit_count,
                               vw1.actual_ouc ouc, er.eng_name engineer_name,
                               CASE
                                  WHEN c.home_parked IS NOT NULL
                                     THEN c.home_parked
                                  ELSE 'N'
                               END home_parker,
                               CASE
                                  WHEN c.home_parked IS NOT NULL
                                     THEN c.commute_time
                                  ELSE -99
                               END commute_time,
                               vw1.stores_com_cost ---v9.3---
                          FROM (SELECT   pin_ein, engineer_pin, actual_ouc,
                                         transaction_date, effective_week,
                                         NVL
                                            (SUM
                                                (CASE
                                                    WHEN (   cow LIKE '%TOOL%'
                                                          OR cow LIKE
                                                                     '%TOOLE%'
                                                         )
                                                       THEN transaction_value
                                                 END
                                                ),
                                             0
                                            ) stores_tools_cost,
                                         SUM
                                            (transaction_value
                                            ) stores_total_cost,
                                         SUM (transaction_quantity)
                                                                   item_count,
                                         COUNT
                                            (DISTINCT sta_code
                                            ) stores_visit_count,
                                         NVL
                                            (SUM
                                                (CASE
                                                    WHEN cow in (SELECT cow FROM orbit_odw.stores_cow_ref)
                                                       THEN transaction_value
                                                 END
                                                ),
                                             0
                                            ) stores_com_cost     ---v9.3---
                                    FROM orbit_odw.stores_transaction_dtls
                                   WHERE effective_week BETWEEN 201543
                                                            AND 201610
                                     /***Ver 6.0---last 13 weeks data to be considered***/
                                     AND transaction_date
                                            BETWEEN to_date('19-10-2015','dd-mm-yyyy')
                                                AND to_date('06-03-2016','dd-mm-yyyy')
                                /***Ver 6.0---last 13 weeks data to be considered***/
                                GROUP BY pin_ein,
                                         engineer_pin,
                                         actual_ouc,
                                         transaction_date,
                                         effective_week) vw1,
                               (SELECT *
                                  FROM orbit_odw.dim_wms_rmdm
                                 WHERE current_status = 1) er,
                               (SELECT engineer_ein, commute_time,
                                       home_parked
                                  FROM orbit_odw.eng_parking_at_home_dtls
                                 WHERE rec_end_date > SYSDATE
                                   AND home_parked = 'Y') c
                         WHERE TO_CHAR (vw1.pin_ein) = er.ein
                           AND vw1.pin_ein = c.engineer_ein(+))  group by pin_ein,engineer_pin,transaction_date,EFFECTIVE_WEEK having count(1)>1; 

请帮忙.. 提前致谢

最佳答案

基本上,如果我正确理解你的问题。您需要了解外部 SELECT 从哪里获取数据。因此有一个简单的规则集用于获取这些数据。步骤如下。

  • 检查列输出,即在您的情况下它是 pin_ein,engineer_pin,transaction_date,EFFECTIVE_WEEK
  • 检查外部查询所在的内联 View 或表 获取数据。就您而言,它是您拥有的唯一内联 View 用过 --> 所以很容易识别:P
  • 现在确定您的内联 View VW1 如何填充数据。在你的 案例表 Orbit_odw.stores_transaction_dtls 用于填充 必填字段。

希望需要这么多信息。此外,对于简单查询,您始终可以转到 ALL_TAB_COLUMNS 系统表来轻松识别表的列。

关于mysql - 如何从复杂的sql查询中知道源表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36693002/

相关文章:

php - 在 PHP 中仅将年份转换为日期时间

oracle - Oracle NUMBER 类型是否可能溢出?

带有一个提交按钮的php多搜索文本框

php - 使用 mysql 或 php 将 `group` 与 `tags` 分组/格式化

python - 如何使用数据框中的值更好地构造 SQL 语句?

sql - 两个连续的工会

java - 删除sql不删除

oracle - 如何找出存储过程中使用了哪些表/ View /同义词

oracle - 我想将变量参数传递给外部 SQL 文件(PL/SQL with SQL*Plus)

mysql 以年表示的日期之间的差异