Я пытаюсь получить максимальное количество элементов в таблице в столбце «Код».Count Max, используя несколько столбцов
У меня есть данные в моей таблице, как это:
ID Contact Date Service Code Tech Code1 Code2 Code3 Code4 Code5
1 306 5/8/2009 Individual 30751 3004 Mike 30751 3004 NULL NULL NULL
2 306 5/13/2009 Individual 30751 3004 Mike 30751 3004 NULL NULL NULL
3 308 4/17/2009 Testing 29631 Keith 29631 NULL NULL NULL NULL
4 318 4/20/2009 Individual 29633 Carol 29633 NULL NULL NULL NULL
5 318 4/27/2009 Individual 29633 Carol 29633 NULL NULL NULL NULL
6 318 4/13/2009 Individual 29633 Carol 29633 NULL NULL NULL NULL
7 318 5/4/2009 Individual 29633 Carol 29633 NULL NULL NULL NULL
8 318 5/11/2009 Individual 29633 Carol 29633 NULL NULL NULL NULL
9 320 4/27/2009 Office 5781 3004 4019 Ed 5781 3004 4019 NULL NULL
10 324 4/17/2009 Individual 3004 Julie 3004 NULL NULL NULL NULL
11 324 2/20/2009 Individual 3004 Julie 3004 NULL NULL NULL NULL
12 324 4/3/2009 Individual 3004 Julie 3004 NULL NULL NULL NULL
13 325 5/19/2009 Interview 3090 Max 3090 NULL NULL NULL NULL
Обратите внимание на столбец Код иногда имеет более одного элемента, разделенных пробелом. В этом случае второй код переходит в столбец Code2, и если есть третий код, он перейдет в столбец Code3.
В настоящее время мы используем такой запрос, чтобы найти наиболее распространенный код, однако он не является точным для строк, содержащих более одного элемента в столбце «Код».
SELECT * FROM ( SELECT ID,
CASE
WHEN dd1.allowed = 1 AND dd1.co_allowed = 1 THEN Code1
WHEN dd2.allowed = 1 AND dd2.co_allowed = 1 THEN Code2
WHEN dd3.allowed = 1 AND dd3.co_allowed = 1 THEN Code3
END AS Code,
ROW_NUMBER() OVER(PARTITION BY ID ORDER BY Date DESC) AS RowNum
FROM MC
LEFT JOIN ReferenceTables.dbo.dim_code dd1 ON MC.Code1 = dd1.no_decimal
LEFT JOIN ReferenceTables.dbo.dim_code dd2 ON MC.Code2 = dd2.no_decimal
LEFT JOIN ReferenceTables.dbo.dim_code dd3 ON MC.Code3 = dd3.no_decimal
WHERE (dd1.allowed = 1 AND dd1.co_allowed = 1)
OR (dd2.allowed = 1 AND dd2.co_allowed = 1)
OR (dd3.allowed = 1 AND dd3.co_allowed = 1)) x
WHERE RowNum = 1
Как я могу точно подсчитать элементы, используя столбцы Code1, Code2, Code3 и Code4? Или есть способ поставить все эти коды в один столбец и подсчитать так? Я не уверен, как это сделать.