求大神解答如何写嵌套select

我想要在这个select 外面再包一个select 把我的系统工时和软件工时求和,作为总工时,然后同时再列出试验人和试验组,请问语法应该怎么实现啊?

select distinct GUID,SYNM as 试验人,ITEM,SYDT,WLNM,CLDT,dbo.BTNRGC_gc_personbasedata.试验人,SYZU as 试验组,

case when OSNM is null then N'未知系统'

when OSNM like N'%自带%' then N'自带系统'

else OSNM

end

as OSNM1,OSVR,

case when OSNM like '%RedHat%'     --红帽7.3 20分钟,其他30分钟

then (case when OSVR like '%7.3%' then 20 else 30 end)

when OSNM like N'%凝思%'    --凝思 20分钟

then 20 /*(case when OSVR like '%.60%' then 15 else 25 end)*/

when OSNM like '%Windows%'     --windows10/2016 30分钟,其他45分钟

then (case when OSVR like '%10%' or OSVR like '%2016%' then 30 else 45 end)

when OSNM like '%Unix%'     --unix 120分钟

then 120

when OSNM like N'%麒麟%'    --麒麟 15分钟

then 15

when OSNM like '%新支点%' --新支点 15分钟

then 15

else 0    --其他内容 0分钟

end

as 系统工时,SOFT,SFVR,LANG,

case when SOFT like '%PCS-9700%' or SOFT like '%PCS-9150%' or SOFT like N'%五防%'

then 10    --PCS-9700,9150,9200 10分钟

when SOFT like N'%录波%'    --中文录波10分钟,海外15分钟

then (case when LANG like N'%中文%' then 10 else 15 end)

when SOFT like '%RCS-9700%'    --RCS-9700软件 60分钟

then 60

when SOFT like '%PCS-9012%'    --PCS-9012软件 15分钟

then 15

when SOFT like '%PCS-9000%'    --PCS-9000软件 180分钟

then 180

else 0    --其他内容 0分钟

end

as 软件工时,

count(GUID) as cnt,

convert(varchar(10),SYDT,120) as day1   

from dbo.BTNRGC_PtestPc

join dbo.BTNRGC_gc_personbasedata

on (dbo.BTNRGC_PtestPc.SYNM = dbo.BTNRGC_gc_personbasedata.试验人)/* and convert(varchar(10),dbo.BTNRGC_PtestPc.CLDT,120) = dbo.BTNRGC_gc_personbasedata.日期)

join dbo.BTNRGC_t_date_info

on (convert(varchar(10),dbo.BTNRGC_PtestPc.CLDT,120) = CONVERT(VARCHAR(10),dbo.BTNRGC_t_date_info.SQLDATE,120))*/

where convert(varchar(10),SYDT,120)>='${starttime}'

and convert(varchar(10),SYDT,120)<='${endtime}'

--AND SYNM IN   (N'${试验人}')

group by GUID,SYNM,ITEM,ITEM,SYDT,WLNM,WLNM,OSNM,CLDT,OSVR,SOFT,SFVR,LANG,dbo.BTNRGC_gc_personbasedata.试验人,syzu

order by SYNM

SQL 帆软用户lusq 发布于 2024-4-11 14:39
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2024-4-11 14:41

select  试验人,试验组,sum(系统工时),sum(软件工时) from (

select distinct GUID,SYNM as 试验人,ITEM,SYDT,WLNM,CLDT,dbo.BTNRGC_gc_personbasedata.试验人,SYZU as 试验组,

case when OSNM is null then N'未知系统'

when OSNM like N'%自带%' then N'自带系统'

else OSNM

end

as OSNM1,OSVR,

case when OSNM like '%RedHat%'     --红帽7.3 20分钟,其他30分钟

then (case when OSVR like '%7.3%' then 20 else 30 end)

when OSNM like N'%凝思%'    --凝思 20分钟

then 20 /*(case when OSVR like '%.60%' then 15 else 25 end)*/

when OSNM like '%Windows%'     --windows10/2016 30分钟,其他45分钟

then (case when OSVR like '%10%' or OSVR like '%2016%' then 30 else 45 end)

when OSNM like '%Unix%'     --unix 120分钟

then 120

when OSNM like N'%麒麟%'    --麒麟 15分钟

then 15

when OSNM like '%新支点%' --新支点 15分钟

then 15

else 0    --其他内容 0分钟

end

as 系统工时,SOFT,SFVR,LANG,

case when SOFT like '%PCS-9700%' or SOFT like '%PCS-9150%' or SOFT like N'%五防%'

then 10    --PCS-9700,9150,9200 10分钟

when SOFT like N'%录波%'    --中文录波10分钟,海外15分钟

then (case when LANG like N'%中文%' then 10 else 15 end)

when SOFT like '%RCS-9700%'    --RCS-9700软件 60分钟

then 60

when SOFT like '%PCS-9012%'    --PCS-9012软件 15分钟

then 15

when SOFT like '%PCS-9000%'    --PCS-9000软件 180分钟

then 180

else 0    --其他内容 0分钟

end

as 软件工时,

count(GUID) as cnt,

convert(varchar(10),SYDT,120) as day1   

from dbo.BTNRGC_PtestPc

join dbo.BTNRGC_gc_personbasedata

on (dbo.BTNRGC_PtestPc.SYNM = dbo.BTNRGC_gc_personbasedata.试验人)/* and convert(varchar(10),dbo.BTNRGC_PtestPc.CLDT,120) = dbo.BTNRGC_gc_personbasedata.日期)

join dbo.BTNRGC_t_date_info

on (convert(varchar(10),dbo.BTNRGC_PtestPc.CLDT,120) = CONVERT(VARCHAR(10),dbo.BTNRGC_t_date_info.SQLDATE,120))*/

where convert(varchar(10),SYDT,120)>='${starttime}'

and convert(varchar(10),SYDT,120)<='${endtime}'

--AND SYNM IN   (N'${试验人}')

group by GUID,SYNM,ITEM,ITEM,SYDT,WLNM,WLNM,OSNM,CLDT,OSVR,SOFT,SFVR,LANG,dbo.BTNRGC_gc_personbasedata.试验人,syzu

order by SYNM

) a

group by 试验人,试验组,

  • 帆软用户lusq 帆软用户lusq(提问者) 您好,感谢啊!我想要的是在外层把系统工时和软件工时求和了,然后刚才跑了一下报错说 ‘多次为a指定了试验人’
    2024-04-11 14:45 
  • 用户k6280494 用户k6280494 回复 帆软用户lusq(提问者) 你sql里面有两个试验人字段,你后面那个换个别名
    2024-04-11 14:47 
  • 帆软用户lusq 帆软用户lusq(提问者) 回复 用户k6280494 好的,确实解决了,感谢
    2024-04-11 14:51 
  • 用户k6280494 用户k6280494 回复 帆软用户lusq(提问者) 记得采纳一下
    2024-04-11 14:52 
  • 2关注人数
  • 130浏览人数
  • 最后回答于:2024-4-11 14:41
    请选择关闭问题的原因
    确定 取消
    返回顶部