如何获取AVG列忽略NULL和零值?
我有三列来获得他们的平均值,我尝试使用以下脚本:
SELECT distinct
AVG(cast(ISNULL(a.SecurityW,0) as bigint)) as Average1
,AVG(cast(ISNULL(a.TransferW,0) as bigint)) as Average2
,AVG(cast(ISNULL(a.StaffW,0) as bigint)) as Average3
FROM Table1 a, Table2 b
WHERE a.SecurityW <> 0 AND a.SecurityW IS NOT NULL
AND a.TransferW<> 0 AND a.TransferWIS NOT NULL
AND a.StaffW<> 0 AND a.StaffWIS NOT NULL
AND MONTH(a.ActualTime) = 4
AND YEAR(a.ActualTime) = 2013
Run Code Online (Sandbox Code Playgroud)
我没有得到任何结果,但是三列的值包括NULL和零!
无论如何在获得平均值之前排除空值?
例: AVERAGE(NOTNULL(SecurityW))
我将逗号分隔的数字作为字符串传递给存储过程,参数在IN关键字中使用,但是当我执行SP(参数如"1,2")时,它给出了一个错误:
将varchar值'1,2'转换为数据类型int时转换失败.
存储过程是:
ALTER PROCEDURE [Reports].[LocationSummary]
@dtFrom VARCHAR(MAX),
@dtTo VARCHAR(MAX),
@passTypeId VARCHAR(MAX),
@passCategoryId VARCHAR(MAX),
@passTransId VARCHAR(MAX),
@printOption VARCHAR(MAX),
@printLocationId VARCHAR(MAX)
AS
BEGIN
SELECT Admins.PLocations.ArabicName AS PLocationA,
Admins.PLocations.EnglishName AS PLocationE,
SUM(CASE WHEN Port.Info.Printed = 1 THEN 1 ELSE 0 END) AS Printed,
SUM(CASE WHEN Port.Info.Printed = 0 THEN 0 ELSE 1 END) AS NotPrinted,
SUM(CASE WHEN Port.PortPrintLog.PortId IS NOT NULL THEN 1 ELSE 0 END) AS Reprinted
FROM Port.Info INNER JOIN
Port.PortRequests ON
Port.Info.PassRequestId = Port.PortRequests.ID LEFT JOIN
Port.PortDefinitions …Run Code Online (Sandbox Code Playgroud) 我正在使用MVC 5并且我正在使用自定义视图处理我的错误,例如(404,403等)它在我的本地IIS上正常工作但是当我在登台服务器上发布时它显示IIS服务器错误有关这些错误代码的消息.
它显示了这条消息:

代替:

我修改了web.configfor<customErrors mode="Off" />
Global.asax中
if ((Context.Server.GetLastError() is UnauthorizedAccessException))
{
log.LogError(Context.Server.GetLastError().Message, Context.Server.GetLastError());
customErrorPage = @"~/Error/?id=403"; //security
}
else if ((Context.Server.GetLastError() is HttpException) && (((HttpException)Context.Server.GetLastError()).GetHttpCode() == 404))
{
//** Handle 404 error and response code
log.LogError("404", Context.Server.GetLastError());
customErrorPage = @"~/Error/?id=404";
}
else
{
log.LogError(Context.Server.GetLastError().Message, Context.Server.GetLastError());
customErrorPage = @"~/Error";
}
if (ConfigurationHelper.Common.ShowCustomErrorPage)
{
var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
Response.Redirect(urlHelper.Content(customErrorPage), false);
Server.ClearError();
}
Run Code Online (Sandbox Code Playgroud)
错误控制器:
public ActionResult Index(string id)
{
if (!string.IsNullOrEmpty(id) && id.Equals("404"))
{
Response.StatusCode …Run Code Online (Sandbox Code Playgroud) 我知道这已经被问过很多次了,但不幸的是我没有找到解决我的问题的方法,我正在使用urlmon.dll从字节数组中查找 MIME 类型,但我收到了 IIS 进程的崩溃w3wp.exe
尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
编码:
public static int MimeSampleSize = 256;
public static string DefaultMimeType = "application/octet-stream";
[DllImport(@"urlmon.dll", CharSet = CharSet.Auto)]
private extern static uint FindMimeFromData(
uint pBC,
[MarshalAs(UnmanagedType.LPStr)] string pwzUrl,
[MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer,
uint cbSize,
[MarshalAs(UnmanagedType.LPStr)] string pwzMimeProposed,
uint dwMimeFlags,
out uint ppwzMimeOut,
uint dwReserverd
);
public static string GetMimeFromBytes(byte[] data)
{
try
{
uint mimeType;
FindMimeFromData(0, null, data, (uint)MimeSampleSize, null, 0, out mimeType, 0);
var mimePointer = new IntPtr(mimeType);
var mime = Marshal.PtrToStringUni(mimePointer); …Run Code Online (Sandbox Code Playgroud) 我有以下几点:
foreach (var item in selected)
{
var categories = _repo.GetAllDCategories(item);
var result = from cat in categories
select
new
{
label = cat.Name,
value = cat.Id
};
}
Run Code Online (Sandbox Code Playgroud)
该方法GetAllDCategories返回一个IEnumerable<T>
如何添加result到IEnumerable包含result循环中所有选定项目的所有项目的新对象?
如何使用 APDU 命令获取智能卡的序列号?我尝试使用 SCardGetAttrib 函数来查询它,winscard.dll但没有成功,我被告知使用 APDU 命令来执行此操作,因为没有标准方法来获取序列号。问题是我无法弄清楚我的智能卡是什么类型!因此,我查看了一些流行智能卡制造商的文档,但没有找到获得序列号的方法!
我的读卡器是ACR88。
c# ×3
iis ×2
sql-server ×2
t-sql ×2
apdu ×1
asp.net-mvc ×1
ienumerable ×1
linq ×1
server-error ×1
smartcard ×1
sql ×1
urlmon ×1