2015-07-12 80 views
0

我需要帮助实现以下结果DB2:DB2 - sql查询列的由

USER_NAME 2015-07-01 2015-07-02 2015-07-03  2015-07-04 
--------- ---------- ---------- ----------  ---------- 
User1  36   36   36    36 
User2  52   52   2    52 
User3  38   38   38    0 
User4  15   15   0    15 
User5  0    1   11    21 

基本上我需要得到用户的总任务的最后7天。如果可能的话,列标识符是当天,并且也没有显示任何结果的日子。

@Edit

基本上有两个表 - 任务的用户

SQL:

select distinct usr.user_name, count(*) from task lt 
left join USER usr on lt.USER_ID = usr.USER_ID 
where task_name like 'Task1' 
and lt.close_datetime > current_date 
and lt.status = 'Closed' 
group by usr.user_name 
order by usr.user_name desc 
with ur 

在此先感谢

+0

请说明与给定问题相关的表格。如果可能的话,还可以提供[sqlfiddle](http://www.sqlfiddle.com)以增加获得相关答案的机会。 – Pholochtairze

+0

我编辑帖子,基本上是两个表任务一个用户 – tiago

+0

你没有给*近*足够的信息。你也没有向我们展示你试过的东西,你得到的错误是什么。这几乎就像你告诉我们一列火车离开两个城市。你可以在见面前吃几个三明治? – WarrenT

回答

1

这样的事情,可能是什么?

with t (n,s) as (
    select 1, 'USER_NAME 2015-07-01 2015-07-02 2015-07-03  2015-07-04' from sysibm.sysdummy1 
    union all 
    select 2, '--------- ---------- ---------- ----------  ----------' from sysibm.sysdummy1 
    union all 
    select 3, 'User1  36   36   36    36' from sysibm.sysdummy1 
    union all 
    select 4, 'User2  52   52   2    52' from sysibm.sysdummy1 
    union all 
    select 5, 'User3  38   38   38    0' from sysibm.sysdummy1 
    union all 
    select 6, 'User4  15   15   0    15' from sysibm.sysdummy1 
    union all 
    select 7, 'User5  0    1   11    21' from sysibm.sysdummy1 
) 
select s from t order by n 
+0

我不确定是否有某种令人印象深刻的内容,或者担心这是一种绝望的呼救方式,你会发现自己处于边缘位置。我们可以指引你走近最近的禅修中心吗? ;-) – WarrenT

+0

@WarrenT - 这是对原始问题的回应,并没有说明OP是否有任何现有的表格可以使用。现在显而易见的是,这里涉及一个或多个表格,结构未知,所以这个答案可能不是最好的。 – mustaccio

+0

(点头)...面对挫折,要给予创造力和努力的功劳。一个小个子可能不及善良。 SQL *是朝着正确方向迈出的一步。希望如果@tiago仍然需要帮助,问题会得到进一步改善。而且,您随时可以随时删除此答案。 – WarrenT

0

我认为这是很简单,谁知道人的问题是一个很大的SQL(不是我:)),我只是解决我的问题是这样,这不是我所知道的最好的方式,但我可以改变的datetime在bash中,无论如何。

select tuser.user_name,COALESCE(
(select count(*) from task lt 
left join LSW_USR_XREF usr on lt.USER_ID = usr.USER_ID 
left join lsw_bpd_instance_vars_pivot pvt on lt.BPD_INSTANCE_ID = pvt.BPD_INSTANCE_ID 
where lt.task_name like 'Task1' 
and lt.close_datetime between '2015-07-13 06:30:08' and '2015-07-13 20:45:08' 
and lt.status = 'Closed' 
and usr.user_name = tuser.user_name 
group by usr.user_name 
order by usr.user_name desc 
with ur),0), 
COALESCE((select count(*) from task lt 
left join LSW_USR_XREF usr on lt.USER_ID = usr.USER_ID 
left join lsw_bpd_instance_vars_pivot pvt on lt.BPD_INSTANCE_ID = pvt.BPD_INSTANCE_ID 
where lt.task_name like 'Task1' 
and lt.close_datetime between '2015-07-10 06:30:08' and '2015-07-10 20:45:08' 
and lt.status = 'Closed' 
and usr.user_name = tuser.user_name 
group by usr.user_name 
order by usr.user_name desc 
with ur),0), 

(...) 

from (select distinct usr.user_name from task lt 
where lt.task_name like 'Task1' 
and lt.close_datetime > current_date - 5 days 
and lt.status = '32' 
and usr.user_name is not null 
group by usr.user_name 
order by usr.user_name desc 
with ur) tuser 
+0

永远不要说这是一个太复杂的问题,只是问题可能包含更多信息,以帮助我们帮助您。对于初学者,我们通常更喜欢关于输入的具体信息,您尝试过的,您遇到的问题或错误。你越能帮助我们确切地知道问题出在哪里,我们就越容易提供帮助。这个答案为我们提供了更多的东西。非常高兴你有一个可行的答案。它*是一个相当简单的问题。有更简单,更快的解决方案。 – WarrenT