求帮改一句sqlserver

image.png

我希望展示1-12月的 我的数据虽然只有1-8的 但是我想要9-12也是空的在后面显示出来

SELECT COUNT(A.采购数量) AS 批次,SUM(A.采购数量) AS 总数,大区分,供应商,MONTH1,MONTH2,判断 from (SELECT 供应商,采购数量,convert(varchar(10),Month(答复日期))+N'月' as MONTH1,Month(答复日期) AS MONTH2,CASE WHEN month(答复日期)>month(GETDATE()) THEN '未到' ELSE '已过' END AS 判断,大区分,答复日期

 FROM [dbo].[ERP导入] where convert(varchar(10), 答复日期, 120) > '2021-12-31'

AND  convert(varchar(10), 答复日期, 120) < '2023-01-01')A WHERE 供应商='${供应商}' ${if(大区分="全部","",if(大区分="其他","and 大区分 NOT IN ('AA' ,'AB', 'AC' ,'AD','AE')","and 大区分='"+大区分+"'")) } GROUP BY 大区分,供应商,MONTH1,MONTH2,判断 ORDER BY MONTH2 ASC

这是我的SQL

FineReport SQL callie 发布于 2022-8-10 15:27
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-8-10 15:31(编辑于 2022-8-10 15:38)

with a as (

select '1月' [month_]

union all

select '2月'

union all

select '3月'

union all

select '4月'

union all

select '5月'

union all

select '6月'

union all

select '7月'

union all

select '8月'

union all

select '9月'

union all

select '10月'

union all

select '11月'

union all

select '12月'

)

select * from a left join (

SELECT COUNT(A.采购数量) AS 批次,SUM(A.采购数量) AS 总数,大区分,供应商,MONTH1,MONTH2,判断 from (SELECT 供应商,采购数量,convert(varchar(10),Month(答复日期))+N'月' as MONTH1,Month(答复日期) AS MONTH2,CASE WHEN month(答复日期)>month(GETDATE()) THEN '未到' ELSE '已过' END AS 判断,大区分,答复日期

 FROM [dbo].[ERP导入] where convert(varchar(10), 答复日期, 120) > '2021-12-31'

AND  convert(varchar(10), 答复日期, 120) < '2023-01-01')A WHERE 供应商='${供应商}' ${if(大区分="全部","",if(大区分="其他","and 大区分 NOT IN ('AA' ,'AB', 'AC' ,'AD','AE')","and 大区分='"+大区分+"'")) } GROUP BY 大区分,供应商,MONTH1,MONTH2,判断

) T ON A.month_=T.MONTH1 

  • callie callie(提问者) 数据集配置错误报错
    2022-08-10 15:37 
  • Z4u3z1 Z4u3z1 回复 callie(提问者) 我改了一下 T里面不要 order by
    2022-08-10 15:39 
最佳回答
1
CD20160914Lv8专家互助
发布于2022-8-10 15:29(编辑于 2022-8-10 15:33)

单元格直接把1-12月列出来。。。然后用过滤设置你查询出来的数据就行了

通过月份过滤

。这样月份不是数据集查询出来的。而是通过单元格已经设置好的。再通过过滤就行了

单元格公式:MAPARRAY(range(1,12),format(item,"00"))  横向扩展。。。再设置数据集过滤等于对应的单元格就行了。。

image.png

另一个比如ds1数据集月份字段等于B2单元格就可以过滤了。

image.png

image.png

最佳回答
0
privacyLv5初级互助
发布于2022-8-10 15:31

你有月份的维度表吗,有的话用月份维度表left join 数据表就可以了

  • 3关注人数
  • 363浏览人数
  • 最后回答于:2022-8-10 15:38
    请选择关闭问题的原因
    确定 取消
    返回顶部