首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server查询帮助

SQL Server查询帮助
EN

Stack Overflow用户
提问于 2009-05-05 16:46:39
回答 4查看 107关注 0票数 0

对不起*这是我应该放的

我的查询是为具有1个以上实例的任何记录创建重复条目(与日期无关)

代码语言:javascript
复制
<asp:SqlDataSource ID="EastMonthlyHealthDS" runat="server" 
    ConnectionString="<%$ ConnectionStrings:SNA_TRTTestConnectionString %>" 
    SelectCommand="SELECT [SNA_Parent_Accounts].[Company], 
                   (SELECT [Monthly_HIP_Reports].[AccountHealth] from [Monthly_HIP_Reports] where ([Monthly_HIP_Reports].[YearMonth] = @ToDtRFC) AND ([SNA_Parent_Accounts].[CompID] = [Monthly_HIP_Reports].[CompID])) as [AccountHealth],
                   [SNA_Parent_Accounts].[CompID]
                   FROM [SNA_Parent_Accounts]
                   LEFT OUTER JOIN [Monthly_HIP_Reports] ON [Monthly_HIP_Reports].[CompID] = [SNA_Parent_Accounts].[CompID]
                   WHERE (([SNA_Parent_Accounts].[Classification] = 'Business') OR ([SNA_Parent_Accounts].[Classification] = 'Business Ihn')) AND ([SNA_Parent_Accounts].[Status] = 'active') AND ([SNA_Parent_Accounts].[Region] = 'east')
                   ORDER BY [SNA_Parent_Accounts].[Company]">
    <SelectParameters>
         <asp:ControlParameter ControlID="ddMonths" Name="ToDtRFC" PropertyName="Text" Type="String"  />
    </SelectParameters>
</asp:SqlDataSource>

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

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

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

EN

回答 4

Stack Overflow用户

发布于 2009-05-05 16:54:50

此子查询:

代码语言:javascript
复制
(SELECT [Monthly_HIP_Reports].[AccountHealth] from [Monthly_HIP_Reports] where ([Monthly_HIP_Reports].[YearMonth] = @ToDtRFC)) as [AccountHealth],

与任何SNA_Parent_Accounts列都不相关。

这是故意的吗?

票数 2
EN

Stack Overflow用户

发布于 2009-05-05 17:02:55

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

另外,我会看一看这部分代码:

代码语言:javascript
复制
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)中。你是不是失去了一个角色,然后复制成这样?

票数 2
EN

Stack Overflow用户

发布于 2009-05-05 16:55:12

我认为你应该在Monthly_HIP_Reports表和SNA_Parent_Accounts表之间添加连接。我认为这就是它被复制的地方,因为我不知道这些表是做什么的……如果你给出更多的表格描述,我可以确定问题出在哪里……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/825841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档