1

これが私の Loan テーブルのサンプルです。

Loanno  Balance amount  LoanID
1001045 308731.770000   1
1001045 2007700.740000  2
1001045 3087318905.770  3
1001045 308731.770000   4
1001046 306589.67       1
1001046 456321.23       1
1001046 6932542.89      1
1001047 582563.56       2
1001047 965421.34       2
  1. が異なる場合LoannoLoanIdつまり (1,2,3,4,5) の場合、 LoanIndex「6」というフィールドにデータを入力する必要があります。

  2. それ以外の場合、Loannumber のLoanid値がすべて同じ、つまりすべて 1 またはすべて 2 の場合、LoanIndex'1' または '2' のいずれかとして設定する必要があります。

最終的な出力は次のようになります。

Loanno   LoanIndex
1001045    6
1001046    1
1001047    2
4

2 に答える 2

1

Loannoと のすべての一意の組み合わせを提供するクエリから始めますLoanID

SELECT DISTINCT
    Loanno,
    LoanID
FROM [Loan Table]

次に、その SQL をサブクエリとして使用し、LoanIDそれぞれの一意の値の数を計算しますLoanno

SELECT
    distinct_rows.Loanno,
    Count(distinct_rows.LoanID) AS CountOfLoanID
FROM
    (
        SELECT DISTINCT
            Loanno,
            LoanID
        FROM [Loan Table]
    ) AS distinct_rows
GROUP BY distinct_rows.Loanno

最後にそれを your で結合し、is > 1 の場合は 6 を返す式を[Loan Table]使用し、そうでない場合は式を使用します。IIf()CountOfLoanIDLoanID

SELECT
    lt.Loanno,
    IIf(counts.CountOfLoanID>1, 6, lt.LoanID) AS LoanIndex
FROM
    [Loan Table] AS lt
    INNER JOIN
        (
            SELECT
                distinct_rows.Loanno,
                Count(distinct_rows.LoanID) AS CountOfLoanID
            FROM
                (
                    SELECT DISTINCT
                        Loanno,
                        LoanID
                    FROM [Loan Table]
                ) AS distinct_rows
            GROUP BY distinct_rows.Loanno
        ) AS counts
    ON lt.Loanno = counts.Loanno
GROUP BY
    lt.Loanno,
    IIf(counts.CountOfLoanID>1, 6, lt.LoanID);
于 2013-05-25T14:20:18.607 に答える
0

いくつかのクエリを作成します。

1 つのクエリに、loanno / loanid の一意の組み合わせがすべて含まれています

SELECT LoanTable.LoanNo, LoanTable.LoanID
FROM LoanTable
GROUP BY LoanTable.LoanNo, LoanTable.LoanID;

最初のクエリに基づいて構築された次のクエリには、各loannoのloanid値のカウントがあります

SELECT Q_LoanID.LoanNo, Count(Q_LoanID.LoanID) AS [Count]
FROM Q_LoanID
GROUP BY Q_LoanID.LoanNo;

元のデータと 2 番目のクエリに基づいて作成された 3 番目のクエリは、2 番目のクエリのカウント (すべての Loanid が同じ場合は 1、複数ある場合は >1) を使用して、必要なデータ更新を実行します。

SELECT LoanTable.LoanNo, IIf([count]>1,"6",[LoanTable].[LoanID]) AS LoanID, Sum(LoanTable.Balance) AS Balance
FROM LoanTable INNER JOIN Q_LoanID_count ON LoanTable.LoanNo = Q_LoanID_count.LoanNo
GROUP BY LoanTable.LoanNo, IIf([count]>1,"6",[LoanTable].[LoanID]);
于 2013-05-24T12:21:20.980 に答える