Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 server 基于多个表的一个日期-月份值进行多次添加_Sql Server - Fatal编程技术网

Sql server 基于多个表的一个日期-月份值进行多次添加

Sql server 基于多个表的一个日期-月份值进行多次添加,sql-server,Sql Server,我试图在下面代码的第二段代码中添加3个过滤器 因此,我得到了按状态id、区域和类型过滤的年-月计数。我是SQL新手,只是找不到一种方法来合并这两个代码以使其工作。我花了5个小时试图找到一个解决方案。任何帮助都将不胜感激 我需要一个从jd.OrganizationAddress创建的日期计数,但要过滤它,我需要将jd.OrganizationAddress中的字段OrganizationID链接到jd.Organization表字段ID,该表具有字段StatusID,我需要为4。然后,对于类型字段

我试图在下面代码的第二段代码中添加3个过滤器 因此,我得到了按状态id、区域和类型过滤的年-月计数。我是SQL新手,只是找不到一种方法来合并这两个代码以使其工作。我花了5个小时试图找到一个解决方案。任何帮助都将不胜感激
我需要一个从jd.OrganizationAddress创建的日期计数,但要过滤它,我需要将jd.OrganizationAddress中的字段OrganizationID链接到jd.Organization表字段ID,该表具有字段StatusID,我需要为4。然后,对于类型字段,我必须从jd.OrganizationOrganizationType表中匹配jd.OrganizationType.OrganizationTypeId=jd.OrganizationType.ID,然后从jd.OrganizationType表中匹配jd.OrganizationType.OrganizationId,然后我需要jd.OrganizationType.Name='Bank';最后,对于该地区,我必须通过jd.OrganizationAddress.AddressID=jd.address.ID将其链接到地址表,然后从地址表中,我需要通过将jddress.countryID链接到jd.country\u region.countryID,然后将jd country.region.regionID链接到jd\u region表字段ID,然后如果jd\u region.name=North America来匹配该地区

SELECT
    jd.Organisation.StatusID
  , jd.Region.Name AS Region
  , jd.OrganisationType.Name AS Type
FROM
   jd.Region
  , ((((jd.Organisation 
INNER JOIN
   jd.OrganisationAddress 
ON
   jd.Organisation.ID = jd.OrganisationAddress.OrganisationID) 
INNER JOIN
   jd.Address 
ON
   jd.OrganisationAddress.AddressID = jd.Address.ID) 
INNER JOIN
   jd.Country 
ON
   jd.Address.CountryID = jd.Country.ID) 
INNER JOIN
   jd.OrganisationOrganisationType 
ON
   jd.Organisation.ID = jd.OrganisationOrganisationType.OrganisationID) 
INNER JOIN
   jd.OrganisationType 
ON
   jd.OrganisationOrganisationType.OrganisationTypeID = jd.OrganisationType.ID
WHERE
   (((jd.Organisation.StatusID)<>4) 
AND
   ((jd.Region.Name)='North America') 
AND
   ((jd.OrganisationType.Name)='Bank'));


select year(datecreated), 
   sum(case when month(datecreated) = 1 then 1 else 0 end) Jan,
   sum(case when month(datecreated) = 2 then 1 else 0 end) Feb,
   sum(case when month(datecreated) = 3 then 1 else 0 end) Mar,
   sum(case when month(datecreated) = 4 then 1 else 0 end) Apr,
   sum(case when month(datecreated) = 5 then 1 else 0 end) May,
   sum(case when month(datecreated) = 6 then 1 else 0 end) Jun,
   sum(case when month(datecreated) = 7 then 1 else 0 end) Jul,
   sum(case when month(datecreated) = 8 then 1 else 0 end) Aug,
   sum(case when month(datecreated) = 9 then 1 else 0 end) Sep,
   sum(case when month(datecreated) = 10 then 1 else 0 end) Oct,
   sum(case when month(datecreated) = 11 then 1 else 0 end) Nov,
   sum(case when month(datecreated) = 12 then 1 else 0 end) Dec
   from jd.OrganisationAddress
   group by year(datecreated)
   order 

到yeardatecreated ASC时,您的示例对我来说仍然有点奇怪,但我认为您希望实现以下目标:

基于AdventureWorks2014数据库

SELECT 
  DATEPART(YEAR, ModifiedDate) AS [Year], 
  DATEPART(MONTH, ModifiedDate) AS [Month], 
  SUM(LineTotal) AS TurnOver 
FROM [Sales].[SalesOrderDetail]
GROUP BY DATEPART(YEAR, ModifiedDate), DATEPART(MONTH, ModifiedDate)

我尝试了更多的方法来理解您可能想要实现的目标,并为您提供了另一个答案。这有点像水晶球,对不起:

WITH PreSelection AS (
  SELECT 
    oa.datecreated
  FROM OrganisationAddress oa
  INNER JOIN Organisation o ON o.ID = oa.OrganisationID
  INNER JOIN [Address] a ON oa.AddressID = a.ID
  INNER JOIN Country c ON a.CountryID = c.ID
  INNER JOIN [Region] r ON a.RegionID = r.ID
  -- INNER JOIN [Region] r ON c.RegionID = r.ID
  INNER JOIN OrganisationType ot ON o.OrganisationTypeID = ot.ID
  WHERE o.StatusID <> 4
    AND r.Name = 'North America'
    AND ot.Name ='Bank'
)
SELECT 
  DATEPART(YEAR, datecreated) AS [Year], 
  DATEPART(MONTH, datecreated) AS [Month], 
  COUNT(*) AS RecordCount 
FROM PreSelection 
GROUP BY 
  DATEPART(YEAR, datecreated), 
  DATEPART(MONTH, datecreated);

抱歉,我无法真正理解您的问题。请参考如何创建一个最小的、可复制的示例,谢谢我编辑了这个问题来解释更多,或者这只是一个您喜欢做的计数?我需要一个从jd.organizationAddress创建的日期计数,但要过滤它