【发布时间】:2014-10-20 11:30:31
【问题描述】:
我有一个查询,我不希望将 case 语句包含在 Group By 中, 但是没有它们就会出错。 拜托了。
select res.bu_desc,res.product_desc,sum(partcount) as cnt,report_status from (
select bu.bu_desc,prod.Product_desc, count(part_no) as partcount,
CASE
WHEN pd.created_date between '2012-08-01' and '2014-08-01' THEN 'New'
WHEN s.Status_Id>=4 and s.Status_Id<8 THEN 'Backlog'
WHEN pd.analysis_complete_date between '2012-08-01' and '2014-08-01' THEN 'Delivered'
END as report_status
from scn_part_details pd
left join scn_project_details prd on prd.project_id=pd.project_id
left join scn_bu bu on bu.bu_id=prd.bu_id
left join SCN_Product_Name prod on prod.product_id=prd.product_id
left join [dbo].[SCN_CurrentStatus] as cs on cs.[Part_Id_Num]=pd.[Part_Id_Num]
left join [dbo].[SCN_Status] as s on cs.[Part_Status_Id]=s.Status_Id
where prd.group_id=1 and s.Status_Id not in (12)
and pd.created_date between '2012-08-01' and '2014-08-01'
and pd.analysis_complete_date between '2012-08-01' and '2014-08-01'
group by prod.Product_desc,bu.bu_desc,s.Status_Id,pd.created_date,pd.analysis_complete_date
having count(part_no) > 5) as res
group by res.bu_desc,res.product_desc,report_status
group by res.bu_desc,res.product_desc,report_status
我只想查询我的 ssrs 报告,我将在其中获取按日期创建的零件计数、未完成的零件计数以及成功交付的日期和零件计数。
p>我想以条形图的形式显示报告。
状态是新的、积压的、已交付的。并且所有结果都在此处的查询中获得状态 NEW,因为第一种情况适用于所有结果。即所有这些都是创建的。没有任何结果进入第二和第二阶段。
如何解决?
【问题讨论】:
-
你真正想要什么?我不明白你在问什么。乍一看:您只使用伪外连接,因为使用
prd.group_id=1 and s.Status_Id not in (12)您删除了所有外连接记录,只保留了内连接记录。 part_no 属于哪个表? -
我只想查询我的 ssrs 报告,我将在其中获取按日期创建的零件计数,未完成的零件计数按日期和零件计数成功交付。状态是新的、积压的、已交付的。并且所有结果都在此处的查询中获得状态 NEW,因为第一种情况适用于所有结果。即所有这些都是创建的。没有任何结果进入第二和第二阶段。如何解决这个问题。?
-
你在问:它们是被创造出来的吗?如果不是:他们是否积压?如果没有:它们完成了吗?但你想:他们完成了吗?如果不是:他们是否积压?否则:它们是新的。所以只要把你的 WHEN 子句转过来。
-
再说一遍:part_no 属于哪个表?
-
part_no 属于 scn_part_details 表。
标签: sql sql-server-2008 reporting-services ssrs-2008