Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL连接查询帮助_Sql_Sql Server 2008 - Fatal编程技术网

SQL连接查询帮助

SQL连接查询帮助,sql,sql-server-2008,Sql,Sql Server 2008,目前,我有两个问题: SELECT dateadd(month, x.MonthOffset,0) as [Month], SUM(x.itemcount) as [Total] FROM ( SELECT datediff(month,0, cna.impdate) as MonthOffset, count(*) as itemcount FROM myTable WHERE (emergency = 'Emergency') AND (impdate BETWEEN '

目前,我有两个问题:

SELECT dateadd(month, x.MonthOffset,0) as [Month], SUM(x.itemcount) as [Total] FROM ( SELECT datediff(month,0, cna.impdate) as MonthOffset, count(*) as itemcount FROM myTable WHERE (emergency = 'Emergency') AND (impdate BETWEEN '" + fromDate + "' AND '" + toDate + "') GROUP BY impdate ) x GROUP BY MonthOffset ORDER BY MonthOffset asc SELECT dateadd(month, x.MonthOffset,0) as [Month], SUM(x.itemcount) as [Total] FROM ( SELECT datediff(month,0, cna.impdate) as MonthOffset, count(*) as itemcount FROM myTable WHERE (impdate BETWEEN '" + fromDate + "' AND '" + toDate + "') GROUP BY impdate ) x GROUP BY MonthOffset ORDER BY MonthOffset asc 这将返回2列数据和每月的项目计数

我的问题发生在一个月没有紧急物品的时候。因为我将对象传递给第二个查询,如果从第一个查询检索到的列数与第二个查询不匹配,我将收到一个索引越界错误


我如何将我的两个查询连接在一起,这样我就可以有3列-月、紧急总数和项目总数?紧急总数可以是0或null。

我没有办法测试它,但我认为这应该能提供您想要的:

SELECT dateadd(month, datediff(month,0, cna.impdate),0) as [Month], 
       count(*) as itemcount, 
       SUM(CASE WHEN emergency = 'Emergency' THEN 1 ELSE 0 END) AS EmergencyCount
FROM myTable
WHERE impdate BETWEEN '" + fromDate + "' AND '" + toDate + "'
GROUP BY dateadd(month, datediff(month,0, cna.impdate),0)
ORDER BY [Month] asc

我没有办法测试它,但我认为这应该能满足您的需求:

SELECT dateadd(month, datediff(month,0, cna.impdate),0) as [Month], 
       count(*) as itemcount, 
       SUM(CASE WHEN emergency = 'Emergency' THEN 1 ELSE 0 END) AS EmergencyCount
FROM myTable
WHERE impdate BETWEEN '" + fromDate + "' AND '" + toDate + "'
GROUP BY dateadd(month, datediff(month,0, cna.impdate),0)
ORDER BY [Month] asc

很好的提议是,它将每个月的计数和紧急情况数量都放在一行中。对yookd来说,做任何他需要的事情都应该很简单…我不知道这个案例的表达方式。谢谢,它简单而优雅。很好的报价,它把计数和紧急情况的数量都放在一行中。对yookd来说,做任何他需要的事情都应该很简单…我不知道这个案例的表达方式。谢谢,它既简单又优雅。