下面这段是原来用Access数据库时写的,现在想转成SQL Server的存储过程,各位达人帮看看。
if(ts.Days>1825)
{
sql1=String.Format("SELECT DISTINCT Format$([HisSimuData].[ImportTime],'yyyy') AS [ImportTime] FROM HisSimuData WHERE (ImportTime between #{0}# and #{1}#) and id in ({2});",startTime,endTime,columns);
sql2=String.Format("SELECT DISTINCTROW HisSimuData.ID, Format$([HisSimuData].[ImportTime],'yyyy') AS [ImportTime], Max(HisSimuData.CurValue) AS [CurValue] FROM HisSimuData WHERE (ImportTime between #{0}# and #{1}#) and id in ({2}) GROUP BY HisSimuData.ID, Format$([HisSimuData].[ImportTime],'yyyy'), Year([HisSimuData].[ImportTime]);",startTime,endTime,columns);
unit="年";
}
else
{
if(ts.Days>720)
{
unit="年季度";
sql1=String.Format("SELECT DISTINCT Format$(HisSimuData.ImportTime,'yyyyq') AS [ImportTime] FROM HisSimuData WHERE ImportTime>#{0}# and ImportTime<#{1}# and id in ({2});",startTime,endTime,columns);
sql2=String.Format("SELECT DISTINCTROW HisSimuData.ID, Format$([HisSimuData].[ImportTime],'yyyyq') AS [ImportTime], Max(HisSimuData.CurValue) AS [CurValue] FROM HisSimuData where ImportTime>#{0}# and ImportTime<#{1}# and id in ({2}) GROUP BY HisSimuData.ID, Format$([HisSimuData].[ImportTime],'yyyyq'), Year([HisSimuData].[ImportTime])*4+DatePart('q',[HisSimuData].[ImportTime])-1; ",startTime,endTime,columns);
}
else
{
if(ts.Days>60)
{
unit="年月";
sql1=String.Format("SELECT DISTINCT Format$([HisSimuData].[ImportTime],'yyyymm') AS [ImportTime] FROM HisSimuData WHERE ImportTime>#{0}# and ImportTime<#{1}# and id in ({2});",startTime,endTime,columns);
sql2=String.Format("SELECT DISTINCTROW HisSimuData.ID, Format$([HisSimuData].[ImportTime],'yyyymm') AS [ImportTime], Max(HisSimuData.CurValue) AS [CurValue] FROM HisSimuData GROUP BY HisSimuData.ID, Format$([HisSimuData].[ImportTime],'yyyymm'), Year([HisSimuData].[ImportTime])*12+DatePart('m',[HisSimuData].[ImportTime])-1;",startTime,endTime,columns);
}
else
{
if(ts.Days>5)
{
unit="月日";
sql1=String.Format("SELECT DISTINCT Format$([HisSimuData].[ImportTime],'MMDD') AS [ImportTime] FROM HisSimuData WHERE ImportTime>#{0}# and ImportTime<#{1}# and id in ({2});",startTime,endTime,columns);
sql2=String.Format("SELECT DISTINCTROW Format$([HisSimuData].[ImportTime],'MMDD') AS [ImportTime], HisSimuData.ID, Max(HisSimuData.CurValue) AS [CurValue] FROM HisSimuData where ImportTime>#{0}# and ImportTime<#{1}# and id in ({2}) GROUP BY Format$([HisSimuData].[ImportTime],'MMDD'), HisSimuData.ID;",startTime,endTime,columns);
}
else
{
if(ts.Hours>5)
{
unit="日时";
sql1=String.Format("SELECT DISTINCT Format$([HisSimuData].[ImportTime],'ddhh') AS [ImportTime] FROM HisSimuData WHERE ImportTime>#{0}# and ImportTime<#{1}# and id in ({2});",startTime,endTime,columns);
sql2=String.Format("SELECT DISTINCTROW HisSimuData.ID, Format$([HisSimuData].[ImportTime],'ddhh') AS [ImportTime], Max(HisSimuData.CurValue) AS [CurValue] FROM HisSimuData where ImportTime>#{0}# and ImportTime<#{1}# and id in ({2}) GROUP BY HisSimuData.ID, Format$([HisSimuData].[ImportTime],'ddhh'), Year([HisSimuData].[ImportTime])*12+DatePart('m',[HisSimuData].[ImportTime])-1;",startTime,endTime,columns);
}
else
{
unit="时分";
sql1=String.Format("SELECT DISTINCT Format$([HisSimuData].[ImportTime],'hhmm') AS [ImportTime] FROM HisSimuData WHERE ImportTime>#{0}# and ImportTime<#{1}# and id in ({2});",startTime,endTime,columns);
sql2=String.Format("SELECT DISTINCTROW HisSimuData.ID, Format$([HisSimuData].[ImportTime],'hhmm') AS [ImportTime], Max(HisSimuData.CurValue) AS [CurValue] FROM HisSimuData  where ImportTime>#{0}# and ImportTime<#{1}# and id in ({2}) GROUP BY Format$([HisSimuData].[ImportTime],'hhmm'), HisSimuData.ID;",startTime,endTime,columns);
}
}
} 根据查询的开始时间startTime和结束时间endTime来返回数据集。时间间隔大于1825天,则返回以年为基准的数据集,时间间隔大于720天,则返回以季度为基准的数据集,时间间隔大于60天,则返回以月为基准的数据集,时间间隔大于5天,则返回以日为基准的数据集,时间间隔大于5小时,则返回以时为基准的数据集,小于5小时,则返回以分为基准的数据集 要求返回的数据集中有如下字段:realsimudata.id,realsimu.importtime,realsimudata.value 那个importtime可以转换成数字,所以月份和日都是两位数,不足两位数的十位补0