Tsql 使用T-SQL更改MDX中列的标题

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

我使用T-SQL处理的OLAP多维数据集创建了简单查询,如下所示:

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编辑了我的答案,以反映您的列标题将基于您给定的脚本而不是键入的答案。请尝试此版本(名称已更改为名称),并告知我们您的进展情况。