0

SELECT一意のクエリのステートメントから取得した 2 つの数値を乗算しようとしています。プロバイダーの数と提案の数 (私が作成したクエリはそれを表示します) を取得し、同じ行で両方を乗算します (これはできません)。

私はあなたに示すために非常に簡単な例を作りました (以下と同じコード): DEMO ON FIDDLE

2 つの部門で作業する 2 つのプロバイダーを作成します。

CREATE TABLE ##Provider
(
  id INT,
  p_name VARCHAR(50),
  id_dep INT
)
INSERT INTO ##Provider (id, p_name, id_dep) VALUES 
    (1, 'toto', 10),
    (2, 'toto', 11),
    (3, 'tata', 9);

2 つの部門で 4 つの提案を作成します。

CREATE TABLE ##Proposal
(
  id INT,
  c_name VARCHAR(50),
  id_dep INT
)
INSERT INTO ##Proposal (id, c_name, id_dep) VALUES 
    (1, 'propA', 10),
    (2, 'propB', 09),
    (3, 'propC', 10),
    (4, 'propD', 10);

部門テーブルを作成します。

CREATE TABLE ##Department
(
  id INT,
  d_name VARCHAR(50)
)
INSERT INTO ##Department (id, d_name) VALUES 
    (9, 'dep9')
    ,(10, 'dep10')
    ,(11, 'dep11');

ここでは、部門ごとにプロバイダーと提案の数を表示できます (実際のクエリはもっと​​複雑なので、2 つのサブリクエストを保持したいと思います)。

    select 
        id,
        d_name,
        nb_provider = (
            SELECT COUNT(DISTINCT Id)
            FROM ##Provider p
            WHERE p.id_dep = dep.id
        ),
        nb_proposal = (
            SELECT COUNT(DISTINCT Id)
            FROM ##Proposal pp
            WHERE pp.id_dep = dep.id
        )
    from ##Department dep
    WHERE dep.id = 10

しかし、これらの 2 つの数値の計算を表示することはできません。

    select 
        id,
        d_name,
        nb_provider = (
            SELECT COUNT(DISTINCT Id)
            FROM ##Provider p
            WHERE p.id_dep = dep.id
        ),
        nb_proposal = (
            SELECT COUNT(DISTINCT Id)
            FROM ##Proposal pp
            WHERE pp.id_dep = dep.id
        ),
        calcul = (nb_provider * nb_proposal)  --> DOESN'T WORK
    from ##Department dep
    WHERE dep.id = 10

これが可能かどうかわからないので、あまり試していません...おそらく UNION を使用する必要がありますか?

4

1 に答える 1