Извините * это то, что я должен был поставить
Мой запрос создает повторяющиеся записи для любой записи, которая имеет более 1 экземпляра (независимо от даты)
<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, но также получить статус Health для каждой компании в конкретном [YearMonth], если таковой имеется, для чего предназначен подзапрос. Если запись для этого YearMonth отсутствует, оставьте состояние работоспособности пустым.
но, как указано ранее ... если у вас есть запись, скажем, для 2009-03 для CompID 2 и запись для 2009-04 для CompID 2 .. Неважно, какой месяц вы выберете, будет указана эта компания 2-3 раз.