0

我有两个表表 1 和表 2,公共列是lead_no

现在我想显示表 1 中的数据

如果月差为 6,则将列名显示为 6,如果月差为 5,则列名变为 5,依此类推,直到月差等于 1。有趣的是,列值应该是 no 的计数根据 where some where 条件从表 2 中提取的特定列名的行数。我将在最后列出这些条件。

months_diff 是 b/w SYSDATE 和reported_datetable2 列的差异。

Where conditions


SELECT  col1 as 1  , col2 as 2, col 3 as ... col6 as 6 
  FROM   table1 a
 WHERE   lead_no not in   (SELECT   LEAD_NO FROM table2 
and  RPTCODE=101 and
round(months_between(sysdate,REPORTED_DATE)) NOT IN (1,2,3,4,5,6)
)

);

这里的主要问题是执行子查询以上述格式显示数据。如果发布的问题不够清楚,请告诉我。

4

2 回答 2

0
SELECT  
  sum(CASE round(months_between(sysdate,REPORTED_DATE) WHEN 1 THEN 1 ELSE 0 END ) as 1  
, sum(CASE round(months_between(sysdate,REPORTED_DATE) WHEN 2 THEN 1 ELSE 0 END ) as 2  
, sum(CASE round(months_between(sysdate,REPORTED_DATE) WHEN 3 THEN 1 ELSE 0 END ) as 3  
, sum(CASE round(months_between(sysdate,REPORTED_DATE) WHEN 4 THEN 1 ELSE 0 END ) as 4  
, sum(CASE round(months_between(sysdate,REPORTED_DATE) WHEN 5 THEN 1 ELSE 0 END ) as 5  
, sum(CASE round(months_between(sysdate,REPORTED_DATE) WHEN 6 THEN 1 ELSE 0 END ) as 6  
  FROM   table1 a
WHERE   lead_no not in   (SELECT   LEAD_NO 
                          FROM table2 
                          WHERE
                            RPTCODE=101 
                          and round(months_between(sysdate,REPORTED_DATE)) NOT IN (1,2,3,4,5,6)
                         )
;
于 2013-08-12T14:39:36.667 回答
0

您正在寻找某种支点。因为你还没有写出你正在使用的版本尝试这样的事情

select  sum(case when round(months_between(sysdate,reported_date)) = 1 then 1 else 0 end) as m1 , 
        sum(case when round(months_between(sysdate,reported_date)) = 2 then 1 else 0 end) as m2 , 
        sum(case when round(months_between(sysdate,reported_date)) = 3 then 1 else 0 end) as m3 , 
        sum(case when round(months_between(sysdate,reported_date)) = 4 then 1 else 0 end) as m4 , 
        sum(case when round(months_between(sysdate,reported_date)) = 5 then 1 else 0 end) as m5 , 
        sum(case when round(months_between(sysdate,reported_date)) = 6 then 1 else 0 end) as m6 , 
        count(*) as m_all
from    table1 a , table2 b
where   a.lead_no = b.lead_no
and     rptcode <> 101

我不明白要按什么分组,但你可以添加它。

于 2013-08-12T13:52:59.957 回答