老板让我做个周的现在又让我做个日的报表这么多怎么写啊

with a as (

select '1周' [WEEK_], 1 [num_],CASE WHEN 1>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '2周', 2,CASE WHEN 2>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '3周', 3,CASE WHEN 3>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '4周', 4,CASE WHEN 4>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '5周', 5,CASE WHEN 5>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '6周', 6,CASE WHEN 6>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '7周', 7,CASE WHEN 7>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '8周', 8,CASE WHEN 8>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '9周', 9,CASE WHEN 9>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '10周', 10,CASE WHEN 10>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '11周', 11,CASE WHEN 11>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '12周', 12,CASE WHEN 12>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '13周', 13,CASE WHEN 13>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '14周', 14,CASE WHEN 14>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '15周', 15,CASE WHEN 15>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '16周', 16,CASE WHEN 16>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '17周', 17,CASE WHEN 17>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '18周', 18,CASE WHEN 18>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '19周', 19,CASE WHEN 19>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '20周', 20,CASE WHEN 20>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '21周', 21,CASE WHEN 21>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '22周', 22,CASE WHEN 22>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '23周', 23,CASE WHEN 23>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '24周', 24,CASE WHEN 24>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '25周', 25,CASE WHEN 25>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '26周', 26,CASE WHEN 26>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '27周', 27,CASE WHEN 27>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '28周', 28,CASE WHEN 28>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '29周', 29,CASE WHEN 29>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '30周', 30,CASE WHEN 30>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '31周', 31,CASE WHEN 31>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '32周', 32,CASE WHEN 32>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '33周', 33,CASE WHEN 33>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '34周', 34,CASE WHEN 34>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '35周', 35,CASE WHEN 35>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '36周', 36,CASE WHEN 36>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '37周', 37,CASE WHEN 37>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '38周', 38,CASE WHEN 38>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '39周', 39,CASE WHEN 39>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '40周', 40,CASE WHEN 40>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '41周', 41,CASE WHEN 41>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '42周', 42,CASE WHEN 42>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '43周', 43,CASE WHEN 43>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '44周', 44,CASE WHEN 44>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '45周', 45,CASE WHEN 45>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '46周', 46,CASE WHEN 46>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '47周', 47,CASE WHEN 47>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '48周', 48,CASE WHEN 48>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '49周', 49,CASE WHEN 49>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '50周', 50,CASE WHEN 50>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '51周', 51,CASE WHEN 51>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '52周', 52,CASE WHEN 52>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

union all

select '53周', 53,CASE WHEN 53>datepart(WK, getdate()) THEN '未到' ELSE '已过' END AS 判断1

)

select * from a left join (SELECT

COUNT( A.采购数量 ) AS 批次,

SUM( A.采购数量 ) AS 总数,大区分,供应商,

WEEK1,

WEEK2

FROM

(

SELECT

供应商,采购数量,

CONVERT ( VARCHAR ( 10 ), datepart(WK, 答复日期) ) + N'周' AS WEEK1,

datepart(WK, 答复日期) AS WEEK2,大区分,答复日期 

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

大区分,供应商,

WEEK1,

WEEK2

) T ON A.WEEK_=T.WEEK1 ORDER BY NUM_ ASC

你看这个日这么多365个我一个一个写吗

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

数据不是这样做的。。。你弄一个日期维度表。。然后把它导入进数据库生成一张表。。这个维度尽量弄全。类似如下图,然后你自己用日期关联就行了,先生成个50年或者100年的维度表,不然你永远不知道你的老板要以什么维度统计。。。。反正尽量弄全吧。都是日期维度表了。。。

image.png

image.png

最佳回答
1
runerLv7资深互助
发布于2022-8-11 18:01(编辑于 2022-8-11 18:02)

笑死,你搞个字典啊,网上都有;然后用excel处理,做关联判断

  • 4关注人数
  • 320浏览人数
  • 最后回答于:2022-8-11 18:08
    请选择关闭问题的原因
    确定 取消
    返回顶部