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 を使用する必要がありますか?