1
我正在使用SQL Server 2014,我需要一些硬查詢的幫助。計數不同的多列模式
我有下表(MyTable)。這些列名稱僅用於示例。它們實際上完全不同。
id int,
col1 int,
col2 int,
..
..
..
col70 int
對於順序列的每對{(COL1,COL2),(col2_col3)...(col69_col70)},我需要計算以下內容:不同對每個值具有數 - col_i是靜態列,col_i + 1是另一列。每個值需要除以表中的記錄總量。例如:
col1 | col2
45 | 789
56 | 345
99 | 234
45 | 789
45 | 222
89 | 678
89 | 345
45 | 789
90 | 234
12 | 567
計算:
((45, 789)+(45, 222))/10
(56, 345)/10
(99, 234)/10
(45, 789)+(45, 222)/10
(45, 789)+(45, 222)/10
(89, 678)+(89, 345)/10
(89, 678)+(89, 345)/10
((45, 789)+(45, 222))/10
(90, 234)/10
(12, 567)/10
輸出:
col1_col2
0.2
0.1
0.1
0.2
0.2
0.2
0.2
0.2
0.1
0.1
解釋第一記錄: 45是靜態列的值,所以現在我會檢查col2有多少種不同的組合可供選擇:
45 | 789
45 | 789
45 | 222
45 | 789
總的不同組合除以表中的記錄數:2/10 = 0.2
此計算需要每對連續列。任何建議?是否有一個智能的方法來自動計算它,而不是每行都寫一行查詢?
創建功能,然後在查詢中使用? – HaveNoDisplayName
爲什麼你使用這麼多類似的數據領域?看起來像一個有缺陷的模型。 –
@GoatCO這就是我從客戶端獲取數據的方式。我無法改變結構。 – Omri