C# - sqlserver in 参数化传值
用exec(' + sql语句 + ')的形式,其中in判断条件全部写到参数中。
sql = @"exec('SELECT SWH.Date,SWH.Shift,SWH.FunctionUnit,SWH.ShiftAttendance,SWH.[ShiftTotalWorkingHours],SWH.OvertimeAttendance,SWH.[OvertimeTotalWorkingHours],
SWH.[TotalShiftWorkingHours],WH.[TotalActualWorkingHours]
FROM (SELECT Date,Shift,FunctionUnit,SUM(ShiftAttendance) ShiftAttendance,SUM(ShiftAttendance * ShiftWorkingHours) ShiftTotalWorkingHours,
SUM(OvertimeAttendance) OvertimeAttendance,SUM(OvertimeAttendance * OvertimeWorkingHours) OvertimeTotalWorkingHours,
SUM(ShiftAttendance * ShiftWorkingHours) + SUM(OvertimeAttendance * OvertimeWorkingHours) TotalShiftWorkingHours
FROM ProdLH_ShiftWorkingHours
WHERE '+@Shift+' and '+@FunctionUnit+' and Date>='+@DateStart+' and Date<'+@DateEnd+'
GROUP BY Date,Shift,FunctionUnit) SWH
LEFT JOIN
(SELECT Date,Shift,FunctionUnit,SUM(Hours) TotalActualWorkingHours
FROM ProdLH_WorkingHours
WHERE '+@Shift+' and '+@FunctionUnit+' and Date>='+@DateStart+' and Date<'+@DateEnd+'
GROUP BY Date,Shift,FunctionUnit) WH
ON SWH.Date=WH.Date AND SWH.Shift=WH.Shift AND SWH.FunctionUnit=WH.FunctionUnit')";
//var shift = "'x1','x2'";var date = "'1900-01-01'";
list = this.Get(sql, new { Shift = "Shift in (" + shift + ")", FunctionUnit = "FunctionUnit in (" + functionunit + ")",
DateStart = "'" + dateStart + "'", DateEnd = "'" + dateEnd + "'"}).ToList();
浙公网安备 33010602011771号