我试图根据临时表动态设置columnName,databaseName,schemaName等,但似乎无法使其正常工作。我在下面尝试过?
Create Table #test(databaseName varchar(128), schemaName varchar(128), columnName varchar(128), datatypeName varchar(128));
INSERT INTO #test ('testDatabase', 'testSchema', 'testTable', 'priceColumn');
SELECT
Case
WHEN DataType = 'int'
THEN SELECT MAX(ColumnName) FROM Concat(databaseName, '.', schemaName, '.', tableName)
ELSE 0
end
FROM #test;
DROP TABLE #test;
预期的结果是,下面的子查询占用#test
表中行中的每一行,然后根据这些值进行查询,以便从该表返回maxPrice
SELECT MAX(ColumnName) FROM Concat(databaseName, '.', schemaName, '.', tableName)
答案 0 :(得分:0)
您是否尝试在保留查询流的同时在计算字段上进行汇总?
你可以尝试这样的事情。
SELECT
MAX(FullName)
FROM
(
SELECT
FullName = databaseName+ '.' + schemaName + '.' + columnName,
*
FROM
@test
) AS A
WHERE
DataTypeName='int'
另一个例子
SELECT
MAX(FullNameInt),
MAX(FullNameOther)
FROM
(
SELECT
FullNameInt = CASE WHEN DataTypeName='int' THEN databaseName+ '.' + schemaName + '.' + columnName ELSE NULL END,
FullNameOther = CASE WHEN DataTypeName<>'int' THEN databaseName+ '.' + schemaName + '.' + columnName ELSE NULL END,
*
FROM
@test
) AS A