如何从列表中进行选择? SQL Server

时间:2018-05-29 18:04:49

标签: sql sql-server

我有一个通过SQL查询获得的列列表。

Select Substring(col1, 1, 1) letter, Count(Substring(col1, 1, 1)) cnt
From tbl
Group By Substring(col1, 1, 1)

现在,对于每一列,我想查询有关该列的一些信息,并将它们放在一个表中。

以下是我为单个列运行的查询,例如。

Table_Name, Column_Name, letter, cnt

    tbl, col1, a, 6

    tbl, col1, b, 15

    tbl, col2, a, 5

    ...

此子查询的作用是它获得列中记录的第一个字符的计数。因此,例如,col1中可能有6条记录以字母'a'开头,col1中有15条以字母'b'开头的记录,等等。

如何将这两个查询组合到一个表中,以便得到类似......

的内容
public class MyClass
{
    private static readonly MyLogger.ILog Log = MyLogger.LogManager.GetLogger(typeof(MyClass));

    private void DoSomethingLogged()
    {
        var Log = MyLogger.LogManager.GetLogger(MyClass.Log.Name+"::"+nameof(DoSomethingLogged));
        var localLog = Log;
        var staticLog = MyClass.Log;

        Log.Info("method called");
    }
}

2 个答案:

答案 0 :(得分:1)

你想要这个:

int a = 10;

答案 1 :(得分:1)

这有用吗?

DECLARE @query VARCHAR(Max)

SELECT @query=COALESCE(@query + ' union all ', '') + CAST('SELECT ''' +TABLE_SCHEMA+''' As [Schema],'''+TABLE_NAME+''' As TableName,'''+COLUMN_NAME+''' As ColumnName, Substring(['+COLUMN_NAME+'],1,1) letter,COUNT(Substring(['+COLUMN_NAME+'],1,1)) cnt
FROM '+TABLE_SCHEMA+'.'+TABLE_NAME+
' Group by Substring(['+COLUMN_NAME+'],1,1)' AS VARCHAR(MAX))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE IN('varchar','char','nvarchar') 

--SELECT @query
Exec(@query)