HOSSEINONLINE7
پنج شنبه 05 شهریور 1394, 11:59 صبح
سلام کوئری زیر را نوشتم
Select All sum(Cast(UseValue as Float)) as TotalUseByYear,BillType,MeterName,AreaName,MeterCa pacity,year
From
( Select bp.ParameterValue as UseValue,
b.Year as year,
m.MeterName MeterName,
a.AreaName AreaName,
m.MeterCapacity MeterCapacity,
m.BillType BillType
From tbl_Bill b Join
tbl_Meter m On m.MeterID = b.FK_MeterID Join
tbl_Area a On a.AreaID = m.FK_AreaID Join
tbl_BillParameter bp On bp.FK_BillID = b.BillID Join
tbl_Parameter p On p.ParameterID = bp.FK_ParameterID
Where p.sysID = 'bt0_u_mm' And b.Year in(1394) And a.AreaID in(80042) And m.MeterID in(90089)) as x
Group by MeterName,AreaName,MeterCapacity,BillType,year
در قسمت Where من یک AreaID , MeterID را چک میکنم که برابر اینا باشن . یعنی باید AreaID اول برابر 80042 بعد براساس همین MeterID هم برابر 90089 باشه .
حالا میخوام چند تا MeterID,AreaID بزارم . و اینا با هم چک بشن .
مثلا
AreaID = 200 , MeterID=7
AreaID = 201 , MeterID = 15
به همین صورت . اول بگرده AreaID مورد نظر را پیدا کنه بعد MeterID متناظر با این .
اینا چطور باید بنویسم ؟
یک راهش اینه که بیام همین شرط را برای هر کدوم از مقادیر کامل تکرار کنم و با Union بنویسم . اینطوری هم کار میکنه ولی به نظرم جالب نیست .
Select All sum(Cast(UseValue as Float)) as TotalUseByYear,BillType,MeterName,AreaName,MeterCa pacity,year
From
( Select bp.ParameterValue as UseValue,
b.Year as year,
m.MeterName MeterName,
a.AreaName AreaName,
m.MeterCapacity MeterCapacity,
m.BillType BillType
From tbl_Bill b Join
tbl_Meter m On m.MeterID = b.FK_MeterID Join
tbl_Area a On a.AreaID = m.FK_AreaID Join
tbl_BillParameter bp On bp.FK_BillID = b.BillID Join
tbl_Parameter p On p.ParameterID = bp.FK_ParameterID
Where p.sysID = 'bt0_u_mm' And b.Year in(1394) And a.AreaID in(80042) And m.MeterID in(90089)) as x
Group by MeterName,AreaName,MeterCapacity,BillType,year
در قسمت Where من یک AreaID , MeterID را چک میکنم که برابر اینا باشن . یعنی باید AreaID اول برابر 80042 بعد براساس همین MeterID هم برابر 90089 باشه .
حالا میخوام چند تا MeterID,AreaID بزارم . و اینا با هم چک بشن .
مثلا
AreaID = 200 , MeterID=7
AreaID = 201 , MeterID = 15
به همین صورت . اول بگرده AreaID مورد نظر را پیدا کنه بعد MeterID متناظر با این .
اینا چطور باید بنویسم ؟
یک راهش اینه که بیام همین شرط را برای هر کدوم از مقادیر کامل تکرار کنم و با Union بنویسم . اینطوری هم کار میکنه ولی به نظرم جالب نیست .