在SELECT MSSQL中将列数组注入COUNT - 动态

时间:2015-05-22 16:19:23

标签: sql sql-server

目前我已准备好可以添加的列标记(因此需要动态查询。

我有@cols,可以使用"Color","Size","Width"

等输出打印

然后我有一个SELECT/COUNT语句,需要如下所示......

SELECT
   Product_code,
   count(distinct [Color]),
   count(distinct [Size]),
   count(distinct [Width])
FROM.....

我需要在我的字符串列中使用不同的列进行计数..

如果我也可以在这里添加一个带有每个名称的AS,那就更好了!

非常感谢许多帮助 - 我的SQL没问题,但动态位让我变成蓝色!

干杯。

1 个答案:

答案 0 :(得分:0)

首先将逗号分隔列表转换为表格。 See this 假设表名为ListOfColumns

DECLARE @Query VARCHAR( 1000 ) = '';

SELECT @Query+=@Query + ', COUNT(DISTINCT ' + COLUMN_NAME + ') AS ' + COLUMN_NAME
  FROM INFORMATION_SCHEMA.COLUMNS c
       INNER JOIN ListOfColumns d ON c.COLUMN_NAME = d.ColName
  WHERE TABLE_NAME = 'MyTable';

SET @Query = 'SELECT ' + STUFF( @query,1,3,'' ) + ' FROM Tbl';

EXEC ( @Query );