2016-03-28 2 views
1

Мне нужны только те выделенные записи.MDX: Мне нужны только те выделенные записи

SELECT 
[Measures].[Assessment Patients Detail] ON COLUMNS, 
NON EMPTY([DimAssessment].[Assessment Text].&[Employee Wellness HRA], 
      [DimAssessment].[Question Text].&[Do you use tobacco products?], 
      [DimPatient].[Patient Key].[Patient Key], 
      Generate(
       [DimAssessment].[Answer Text].[Answer Text].MEMBERS 
      ,[DimAssessment].[Answer Text].CURRENTMEMBER 
      *TAIL(
       NonEmpty(
        [DimDate].[Full Date Alternate Key].[Full Date Alternate Key].MEMBERS 
        ,[DimAssessment].[Answer Text].CURRENTMEMBER 
       ) 
       ,[DimAssessment].[Question Text].&[Do you use tobacco products?] 
      ) 
     ) 
)ON ROWS 
FROM 
[Care]; 

]

+0

Я удивлен, что этот код выполняется? – whytheq

+0

@ whytheq- почему вы удивлены, что это ваш запрос (вы прокомментируете на прошлой неделе), но исключенный набор результатов не разобран – Yugandhar

+0

у вас есть это как второй аргумент для Tail: ', [DimAssessment]. [Question Text]. & [Do вы используете табачные изделия?] '... второй аргумент должен быть целым ... поэтому я удивлен. – whytheq

ответ

0

Это, вероятно, не ответ, как я пытался помочь с этим раньше, но следующее немного загадочная:

Второй аргумент функции Tail обычно целое число, например 2 или 3, что означает, что вам нужны последние 2 или последние 3 члена из набора, указанного в первом аргументе Tail.

Я предпочитаю использовать перекрестное соединение, а не кортеж для членов по строкам, но я не думаю, что это даст вам строки, которые требуют:

SELECT 
[Measures].[Assessment Patients Detail] ON COLUMNS, 
NON EMPTY 
    {[DimAssessment].[Assessment Text].&[Employee Wellness HRA]} 
    *{[DimAssessment].[Question Text].&[Do you use tobacco products?]} 
    *[DimPatient].[Patient Key].[Patient Key].members 
    *Generate(
     [DimAssessment].[Answer Text].[Answer Text].MEMBERS 
     ,[DimAssessment].[Answer Text].CURRENTMEMBER 
     *TAIL(
      NonEmpty(
       [DimDate].[Full Date Alternate Key].[Full Date Alternate Key].MEMBERS 
      ,[DimAssessment].[Answer Text].CURRENTMEMBER 
      ) 
     ,1 //[DimAssessment].[Question Text].&[Do you use tobacco products?] 
    ) 
    ) 
ON ROWS 
FROM 
[Care]; 

Нам нужно будет двигаться больше логики внутри генерации.

Сначала попробуйте следующее, чтобы увидеть, возвращает ли он два правильных столбца?

SELECT 
[Measures].[Assessment Patients Detail] ON COLUMNS, 
NON EMPTY 
    Generate(
     [DimPatient].[Patient Key].[Patient Key].MEMBERS 
     ,[DimPatient].[Patient Key].CURRENTMEMBER 
     *TAIL(
      NonEmpty(
       [DimDate].[Full Date Alternate Key].[Full Date Alternate Key].MEMBERS 
      ,[DimPatient].[Patient Key].CURRENTMEMBER 
      ) 
     ,1 
    ) 
ON ROWS 
FROM 
[Care]; 
+0

@ whytheq- отображение сообщения об ошибке 'Query (4, 6) Функция Multiply ожидает выражения набора кортежей для аргумента 1. Использовалось строковое или числовое выражение. ' – Yugandhar

+0

@ whytheq- можете ли вы, пожалуйста, повторить на этом, мне нужна последняя дата и последний ответ для каждого пациента. – Yugandhar

Смежные вопросы