-1

4 つ以上のテーブルが関係する MySql DB を使用してレポートを作成する必要があります。S1_ID と S1_Year_Range (2001-2002 のような文字列) を持つ 1 つのテーブル (S1) と、S2_ID(PK)、S2_Customer_ID、S1_ID (FK)、および私の Where 句に表示される他の条件の他のフィールドを持つ別のテーブル (S2) があります。クエリ。S2 には、S2_Customer_ID が同じで S1_ID が異なる複数の行が存在する可能性があります。私の質問は、VB.net を使用してレポートを作成し、ユーザーに 2 つの値を入力するように求めることです。連続した年数以上 (>= 5 年など) の 1 つの数値と、すべての顧客のリストで最も高い値である年の範囲値 (2011-2012 など)。

私のレポートには、顧客名 (上記のクエリを別のテーブルと結合することにより)、顧客ランク、およびその顧客のすべての年の範囲の値 (一番下が最も高い) が、顧客ごとに 1 つの列に一覧表示されます。このクエリの助けをいただければ幸いです。

データと結果は次のようになります。

S1:

(S1_ID....S1_Year_Range)

(1......2000-2001)

(2......2001-2002)

(3......2002-2003)

(4......2003-2004)

(5......2004-2005)

S2:

(S2_ID.....S2_Customer_ID.....S1_ID)

(1....1....1)

(2....1....2)

(3....1....3)

(4....2....2)

(5....2....3)

(6....2....5)

(7....3....2)

(8....3....3)

(9....3....4)

(10...3...5)

(11...4....3)

(12...4....4)

(13...4...5)

ユーザーが数値 2 と年の範囲 (2003 ~ 2004) を入力すると、結果は次のようになります。

3 つの年の範囲値 (2003 ~ 2004、2002 ~ 2003、および 2001 ~ 2002) を持つ顧客 3 と、2 つの年の範囲値 (2003 ~ 2004 および 2002 ~ 2003) を持つ顧客 4:

cname3
2001-2002

2002-2003

2003-2004


cname4
2002-2003
2003-2004

レポートのコラムが正しく表示されることを願っています。

4

1 に答える 1

0

私はついに問題を解決するために複雑なクエリを作成しました。次のクエリでは、ユーザーの年の範囲の値を「2010-2011」としてエンコードし、連続する年の数を14としてエンコードしました。また、質問とのわずかな違いはテーブル名です。ここでのテーブルCSPは、私の質問のテーブルS2と同じですが、フィールド名は私の質問のテーブルと同じです。

SELECT CSYWFY.S2_Customer_ID、COUNT(CSYWFY.S2_Customer_ID)FROM(SELECT S1F.S1_Year_Range、S2.S2_Customer_ID、COUNT(S1F.S1_Year_Range)FROM CSP as S2 INNER JOIN S1 as S1F ON S2.S1_ID 'IN(SELECT S1N.S1_Year_Range FROM CSP as S2N INNER JOIN S1 as S1N ON S2N.S1_ID = S1N.S1_ID WHERE S2N.S2_Customer_ID = S2.S2_Customer_ID)GROUP BY S2.S2_Customer_ID ASC、S1F。 S2_Customer_ID HAVING COUNT(CSYWFY.S2_Customer_ID)> 14

HTH

于 2013-03-04T16:22:53.550 に答える