Как использовать индекс переменной для запроса другой таблицы, используя цикл while - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь подсчитать различные значения для каждого столбца в таблице.

Я пытаюсь сделать это, используя временную таблицу, в которой есть каждое имя столбца, для которого требуется подсчет.Затем, используя переменную, которая является индексом этой таблицы, я хочу вставить различные значения во вторую временную таблицу.

CREATE TABLE ##test ([row] [int] NOT NULL, [COLUMN_NAME] [char] (100))
Insert INTO ##test ([row], [COLUMN_NAME])
VALUES 
    (1,'[Equipment Number]'),
    (2,'[CEID]'),
    (3,'[Serial Number]'),
    (4,'[Manufacturer]')

CREATE TABLE  ##test2 ([COLUMN_NAME] [char] (100), [Dist Count][INT])
DECLARE @i INT = 1
DECLARE @COL [char] (100)
WHILE @i <= 4 --i.e. the number of rows in ##test
BEGIN
    SET @COL = (select [COLUMN_NAME] from ##test WHERE [row] = @i)
    Insert INTO ##test2 Values (@COL, (SELECT count(DISTINCT @COL) FROM [Database].[Original_Table]))
    SET @i = @i+1 
END

Вывод, который я ожидаю в ## test2, выглядит следующим образом:

COLUMN_NAME   |Dist Count  
[Equipment Number]|1,234   
[CEID]            |456  
[Serial Number]   |789  
[Manufacturer]    |1,011   

Но в таблице, в которой я получаю таблицу со всеми единицами в моем счетчике Dist, т.е.

COLUMN_NAME   |Dist Count  
[Equipment Number]|1  
[CEID]            |1  
[Serial Number]   |1  
[Manufacturer]    |1  

Как я могу заставить свой второй цикл распознавать, что @COL - это имя столбца из Original_Table?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...