2009-05-05 5 views
0

申し訳ありません*これは私がヘルプ

を入れているべきである私のクエリはSELECTを使用して

<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> 

(日付に関係なく)1つの以上のインスタンスを持つすべてのレコードの重複したエントリを作成している

DISTINCTは問題を解決するように見えますが、解決策はありません。データベースに重複するエントリはありません。だから私のクエリはsuperfically複製を作成しているようです。

クエリでは、where句の条件を満たす企業のリストを取得する必要がありますが、その特定の[YearMonth]内の各企業の正常性ステータス(サブクエリが存在する場合)も取得する必要があります。そのYearMonthのエントリが存在しない場合は、Healthステータスを空白のままにします。

しかし、CompID 2の2009-03とCompID 2の2009-04のエントリがある場合は、選択した月が問題ではありません。 3回。

答えて

2

このサブクエリ:

(SELECT [Monthly_HIP_Reports].[AccountHealth] from [Monthly_HIP_Reports] where ([Monthly_HIP_Reports].[YearMonth] = @ToDtRFC)) as [AccountHealth], 

SNA_Parent_Accounts列のいずれにも相関していません。

意図的ですか?

0

[Monthly_HIP_Reports]テーブルと[SNA_Parent_Accounts]テーブルの間に結合を追加する必要があります。私はそれが重複していると思います。私はこれらのテーブルが何であるかわからないからです...あなたがもっとテーブルの説明を与えるなら、私は間違いなくどこに問題があるかを伝えることができます...

2

あなたはそれが " 2つ以上のインスタンスを持つレコードの重複エントリを作成する "複数のインスタンスがある場合、すでに重複しているエントリがあるようですか?

また、私はこのコードの一部を見てみたい:

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] 

は、私は(4)+ VARCHARを見ている '-0' + VARCHAR(2)、アップのように見えました〜8文字、VARCHAR(7)に詰め込まれています。あなたはキャラクターを失い、そのように複製していますか?私は LEFT OUTERをつかんしたMonthly_HIP_Reports]。[COMPID] = [SNA_Parent_Accounts]。[COMPID]

の[Monthly_HIP_Reports] JOINあっIがLEFT OUTER以内に問題が

をJOIN見出さ

+0

VARCHARのニースポイントは、そうであるようです – Quassnoi

0

表示IDが一致したすべての月次レポート。私は何を必要とすることは

LEFT OUTERは[Monthly_HIP_Reports] ON [Monthly_HIP_Reports] JOINをした。[COMPID] = [SNA_Parent_Accounts]。[COMPID] AND([Monthly_HIP_Reports]。[YEARMONTH] = @ToDtRFC)

ので限られましたそれはYearMonthにも同様です。

ありがとうございます!