如何在sql中避免子查询? [英] How to avoid subquery in sql?

查看:563
本文介绍了如何在sql中避免子查询?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这里我有一个我写的查询。问题是它需要花费很多时间才能完全执行。所以我想从这个查询中删除子查询以获取我必须做的事情。请解释我。 />


我的尝试:



Here i have one query that i have written.problem is that it takes hell lot of time to execute fully.So i want to remove subquery from this query for that what i have to do.?please explain me.

What I have tried:

select 
--d1.C_FS_Code
--,fs.C_Name
--ar.C_Name area,us.C_Name Designation
dc.c_description grade,ds1.C_DSC_Code,ca.C_Name speciality,sub.C_Name subarea
,DateName( month , DateAdd( month , MONTH(d1.d_date_report) , 0 ) - 1 ) mn,STUFF((
select ',',day(d.D_Date_Report) from Tbl_dwr d
join tbl_dwr_details ds on ds.N_Srno=d.N_Srno
where MONTH(d.D_Date_Report)>=4
and YEAR(d.D_Date_Report)=2015 
and MONTH(d.d_date_report)=MONTH(d1.d_date_report)
and year(d.d_date_report)=year(d1.d_date_report) 
--and day(d.D_Date_Report)=day(d1.D_Date_Report)
and  ds1.C_DSC_Code=ds.C_DSC_Code
group by MONTH(d.D_Date_Report) ,YEAR(d.D_Date_Report),d.d_date_report,ds.C_DSC_Code for xml path('') ),1,1,'') dates
from Tbl_dwr d1
join tbl_dwr_details ds1 on ds1.N_Srno=d1.N_Srno
--join tbl_fs_mst fs on fs.C_Code=d1.C_FS_Code
--join Tbl_User_Access us on us.N_Type=fs.N_Type
--join Tbl_Area_Mst ar on ar.C_Code=fs.C_Area_Code
join tbl_doc_grade_mst dc on dc.c_code=ds1.c_doc_grade
join Tbl_Doc_Stock_Chem_Add_Mst sd on sd.C_Code=ds1.C_DSC_Code
join Tbl_Category_Mst ca on ca.C_Code=sd.C_Category
join Tbl_Sub_Area_Mst sub on sub.C_Code=sd.C_Subarea_Code
where MONTH(d1.D_Date_Report)>=4
and YEAR(d1.D_Date_Report)=2015 
--and ds1.C_DSC_Code='D051767'
group by MONTH(d1.D_Date_Report),YEAR(d1.D_Date_Report),ds1.C_DSC_Code
--,d1.D_Date_Report,
--,d1.C_FS_Code,fs.C_Name
--,ar.C_Name,us.C_Name 
,dc.c_description ,ds1.C_DSC_Code,ca.C_Name,sub.C_Name





这是我的查询..



this is my query..

推荐答案

您可以使用表变量 T-SQL中的表变量 [ ^ ]



或公用表表达式使用公用表格表达式 [ ^ ]
You can use table variable Table Variables In T-SQL[^]

or Common table expression Using Common Table Expressions[^]


这篇关于如何在sql中避免子查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆