目前我已准备好可以添加的列标记(因此需要动态查询。
我有@cols
,可以使用"Color","Size","Width"
然后我有一个SELECT/COUNT
语句,需要如下所示......
SELECT
Product_code,
count(distinct [Color]),
count(distinct [Size]),
count(distinct [Width])
FROM.....
我需要在我的字符串列中使用不同的列进行计数..
如果我也可以在这里添加一个带有每个名称的AS,那就更好了!
非常感谢许多帮助 - 我的SQL没问题,但动态位让我变成蓝色!
干杯。
答案 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 );