假設我有一張看起來像這樣的表:
CREATE TABLE student
(
name CHAR NOT NULL,
Pwin numeric(5,2) NOT NULL
)
INSERT INTO student
VALUES ('A', 0.5),
('B', 0.7),
('C', 0.6)
這代表了 3 名參加不同賽事的學生。他們每個人都有可能贏得他們的賽事 (Pwin)。這些事件是相互獨立的。他們輸掉比賽的概率就是 = 1 - Pwin。
有8種可能的結果
Awin Bwin Cwin
Awin Bwin Close
Awin Blose Cwin
Awin Blose Close
Alose Bwin Cwin
Alose Bwin Close
Alose Blose Cwin
Alose Blose Close
我想撰寫一個查詢來輸出這些概率。所以對于上面的例子,輸出應該是這樣的
0.5 0.7 0.6
0.5 0.7 0.4
0.5 0.3 0.6
0.5 0.3 0.4
0.5 0.7 0.6
0.5 0.7 0.4
0.5 0.3 0.6
0.5 0.3 0.4
uj5u.com熱心網友回復:
對于此示例資料,您可以獲得與表中不同名稱數量一樣多的連接的所有可能組合:
WITH cte AS (
SELECT name, Pwin p FROM student
UNION ALL
SELECT name, 1 - Pwin FROM student
)
SELECT c1.p col1, c2.p col2, c3.p col3
FROM cte c1
INNER JOIN cte c2 ON c2.name > c1.name
INNER JOIN cte c3 ON c3.name > c2.name;
請參閱演示。
當然,對于更多的名字,這在性能方面不能很好地擴展。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/387481.html
標籤:sql-server 查询语句 加入 联盟
上一篇:從另一個表搜索時替換列值
下一篇:基于LIKE詞連接表
