Tsql 使用T-SQL更改MDX中列的标题
我使用T-SQL处理的OLAP多维数据集创建了简单查询,如下所示:Tsql 使用T-SQL更改MDX中列的标题,tsql,mdx,olap-cube,Tsql,Mdx,Olap Cube,我使用T-SQL处理的OLAP多维数据集创建了简单查询,如下所示: SELECT * FROM OPENQUERY([linkedserver], 'SELECT NON EMPTY { [Measures].[Revenue] } ON COLUMNS, NON EMPTY { ([Basic].[Name].[Name].ALLMEMBERS ) } ON ROWS
SELECT * FROM OPENQUERY([linkedserver], 'SELECT NON EMPTY { [Measures].[Revenue] } ON COLUMNS,
NON EMPTY { ([Basic].[Name].[Name].ALLMEMBERS ) } ON ROWS
FROM [SummaryCube]');
查询的结果是表。此表中列的标题为默认标题,例如:“[Basic].[Names].[Names].[MEMBER_CAPTION]”,但我想更改这些标题,例如:“Names”。我无法使用别名进行更改,或者我使用别名的方式错误。有人能告诉我如何更改列的名称吗?用双引号引用返回列的名称,而不是
选择*
:
SELECT "[Basic].[Name].[Name].[MEMBER_CAPTION]" as Names
您需要使用双引号,因为SQL Server会将方括号识别为标识符。我通常也会进行一些转换:
SELECT
Names = CONVERT(VARCHAR(100), "[Basic].[Name].[Name].[MEMBER_CAPTION]"),
Revenue = CONVERT(NUMERIC(18,2),CAST("[Measures].[Revenue]" AS FLOAT))
FROM
OPENQUERY
(
[linkedserver],
'SELECT
NON EMPTY { [Measures].[Revenue] } ON COLUMNS,
NON EMPTY { ([Basic].[Name].[Name].ALLMEMBERS ) } ON ROWS
FROM [SummaryCube]'
);
如果您切换到更好的olapextensions addin,则会:
DECLARE @Server NVARCHAR(30) = 'SummaryCubeServerName';
DECLARE @Database NVARCHAR(50) = 'SummaryCubeDatabaseName';
DECLARE @MDX NVARCHAR(MAX) = '
SELECT
NON EMPTY { [Measures].[Revenue] } ON COLUMNS,
NON EMPTY { ([Basic].[Name].[Name].ALLMEMBERS ) } ON ROWS
FROM [SummaryCube];
'
CREATE TABLE #Results(
Names VARCHAR(250),
Revenue FLOAT
);
INSERT INTO #Results
EXEC ExecuteOLAP @Server, @Database, @MDX;
SELECT
Names,
Revenue = ISNULL(CONVERT(DECIMAL(28,8),Revenue),0.0),
FROM #Results;
不,这不管用。我认为表达式的开头是:“SELECT*fromOpenQuery([linkedserver]”必须留下。@kenzolek您使用的语句是什么?您收到的错误消息是什么?@kenzolek用户mxix编辑了我的答案,以反映您的列标题将基于您给定的脚本而不是键入的答案。请尝试此版本(名称已更改为名称),并告知我们您的进展情况。