Asp.net SQL Server查询帮助

Asp.net SQL Server查询帮助,asp.net,sql-server,join,Asp.net,Sql Server,Join,对不起,这是我应该放的 我的查询正在为具有多个实例的任何记录创建重复条目(无论日期) 使用SELECT DESIGN似乎纠正了这个问题,但我不认为这是一个解决方案。数据库中没有重复的条目。因此,我的查询似乎在表面上创建重复项 查询应获取满足where子句中条件的公司列表,但也应获取每个公司在该特定[YearMonth]中的健康状态(如果存在),这是子查询的目的。如果该YearMonth的条目不存在,则将Health status留空 但如前所述。。如果您有2009-03年度CompID 2的

对不起,这是我应该放的

我的查询正在为具有多个实例的任何记录创建重复条目(无论日期)


使用SELECT DESIGN似乎纠正了这个问题,但我不认为这是一个解决方案。数据库中没有重复的条目。因此,我的查询似乎在表面上创建重复项

查询应获取满足where子句中条件的公司列表,但也应获取每个公司在该特定[YearMonth]中的健康状态(如果存在),这是子查询的目的。如果该YearMonth的条目不存在,则将Health status留空

但如前所述。。如果您有2009-03年度CompID 2的条目和2009-04年度CompID 2的条目。。无论你选择哪个月,它都会列出该公司2-3次

此子查询:

(SELECT [Monthly_HIP_Reports].[AccountHealth] from [Monthly_HIP_Reports] where ([Monthly_HIP_Reports].[YearMonth] = @ToDtRFC)) as [AccountHealth],
与任何
SNA\u父账户
列均不相关

这是故意的吗?

此子查询:

(SELECT [Monthly_HIP_Reports].[AccountHealth] from [Monthly_HIP_Reports] where ([Monthly_HIP_Reports].[YearMonth] = @ToDtRFC)) as [AccountHealth],
与任何
SNA\u父账户
列均不相关


这是有意的吗?

我认为应该在[Monthly\u HIP\u Reports]表和[SNA\u Parent\u Accounts]表之间添加联接。我想这就是它被复制的地方,因为我不知道这些表格是用来做什么的。。。如果您提供更多的表描述,我肯定可以知道问题出在哪里…

我认为您应该在[Monthly\u HIP\u Reports]表和[SNA\u Parent\u Accounts]表之间添加联接。我想这就是它被复制的地方,因为我不知道这些表格是用来做什么的。。。如果您提供更多的表描述,我肯定可以知道问题出在哪里…

您所说的“为具有多个实例的任何记录创建重复项”是什么意思?如果有多个实例,似乎已经有重复的条目了

另外,我还要看一下这部分代码:

SELECT count(*) FROM [SNA_Ticket_Detail] 
WHERE ([SNA_Ticket_Detail].[CompID] = [SNA_Parent_Accounts].[CompID]) 
   AND (CAST(CAST(YEAR([SNA_Ticket_Detail].[DtRFC]) AS VARCHAR(4)) 
      + '-0' + CAST(MONTH([SNA_Ticket_Detail].[DtRFC]) AS VARCHAR(2))
      AS VARCHAR(7)) = @ToDtRFC) 
   AND ([SNA_Ticket_Detail].[Reviewed] = '1') 
) as [TicketCount] 

我看到一个VARCHAR(4)+'-0'+VARCHAR(2),在我看来最多有8个字符,被塞进了一个VARCHAR(7)。您是否丢失了一个字符并进行了这样的复制?

您所说的“为具有多个实例的任何记录创建重复条目”是什么意思?如果有多个实例,似乎已经有重复的条目了

另外,我还要看一下这部分代码:

SELECT count(*) FROM [SNA_Ticket_Detail] 
WHERE ([SNA_Ticket_Detail].[CompID] = [SNA_Parent_Accounts].[CompID]) 
   AND (CAST(CAST(YEAR([SNA_Ticket_Detail].[DtRFC]) AS VARCHAR(4)) 
      + '-0' + CAST(MONTH([SNA_Ticket_Detail].[DtRFC]) AS VARCHAR(2))
      AS VARCHAR(7)) = @ToDtRFC) 
   AND ([SNA_Ticket_Detail].[Reviewed] = '1') 
) as [TicketCount] 

我看到一个VARCHAR(4)+'-0'+VARCHAR(2),在我看来最多有8个字符,被塞进了一个VARCHAR(7)。您是否丢失了一个字符并进行了这样的复制?

似乎我在左侧外部联接中发现了问题

我有 在[Monthly\u HIP\u Reports].[CompID]=[SNA\u Parent\u Accounts].[CompID]上左外联接[Monthly\u HIP\u Reports]

它抓取了所有与ID匹配的月度报告。我需要的是

在[Monthly_HIP_Reports].[CompID]=[SNA_Parent_Accounts].[CompID]和[Monthly_HIP_Reports].[YearMonth]=@ToDtRFC上左外联接[Monthly_HIP_Reports]

所以它也把它限制在一年一个月


谢谢大家

似乎我在左侧外部联接中发现了问题

我有 在[Monthly\u HIP\u Reports].[CompID]=[SNA\u Parent\u Accounts].[CompID]上左外联接[Monthly\u HIP\u Reports]

它抓取了所有与ID匹配的月度报告。我需要的是

在[Monthly_HIP_Reports].[CompID]=[SNA_Parent_Accounts].[CompID]和[Monthly_HIP_Reports].[YearMonth]=@ToDtRFC上左外联接[Monthly_HIP_Reports]

所以它也把它限制在一年一个月

谢谢大家