Sql MDX如何根据最新日期检索数据
如何仅基于该特定记录的最新日期检索数据Sql MDX如何根据最新日期检索数据,sql,sql-server,ssas,mdx,Sql,Sql Server,Ssas,Mdx,如何仅基于该特定记录的最新日期检索数据 SELECT [Measures].[Assessment Patients Detail] ON COLUMNS ,NON EMPTY ( [DimAssessment].[Assessment Text].&[Employee Wellness HRA] ,[DimAssessment].[Question Text].&[Do you use tobacco products?] ,[
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
)
,[DimPatient].[Patient Key]
)
)
) ON ROWS
FROM [CareManagement];
你所追求的可能是最后的非空聚合 LastNoneEmpty函数是一个半加法函数,需要一个时间类型的维度才能适用(可以在维度属性中设置),这是因为当度量值沿时间维度聚合时,它的行为不同,而不是沿着任何其他(非时间)维度聚合同一度量值 摘自以下链接:
- 沿时间维度的LastNoneEmpty行为:返回沿时间段的最后一个(最早的)现有值,因此,如果每月聚合,则返回具有值的月份最后一天的值
- 沿非时间维度的LastNoneEmpty行为:应用SUM聚合函数,返回的值是沿所有聚合(非时间类型)维度的度量值之和
- 我认为您在
生成中使用了错误的层次结构
SELECT
[Measures].[Assessment Patients Detail] ON 0
,NON EMPTY
{[DimAssessment].[Assessment Text].&[Employee Wellness HRA]}*
{[DimAssessment].[Question Text].&[Do you use tobacco products?]}*
{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
)
)
)}*
{[DimAssessment].[Answer Text].[Answer Text].MEMBERS} ON 1
FROM [CareManagement];
以下是AdvWrks
中的一个类似场景-多个用户使用此多维数据集,以便我们都可以玩:
SELECT
[Measures].[Internet Sales Amount] ON 0
,NON EMPTY
{
[Customer].[Customer].[Alexis Thomas]
,[Customer].[Customer].[Carlos Morgan]
,[Customer].[Customer].[Carlos Scott]
}*
[Customer].[Customer Geography].[Country]*
[Date].[Calendar].[Month] ON 1
FROM [Adventure Works];
它给出了:
我可以在Generate
尝试中开始添加,我可以做到以下几点,但一旦我添加Tail
结果就会消失-不确定它为什么会这样:
SELECT
[Measures].[Internet Sales Amount] ON 0
,NON EMPTY
Generate
(
{
[Customer].[Customer].[Alexis Thomas]
,[Customer].[Customer].[Carlos Morgan]
,[Customer].[Customer].[Carlos Scott]
} AS S
,
s.CurrentMember
*
NonEmpty
(
[Date].[Calendar].[Month].MEMBERS
*
[Customer].[Customer Geography].[Country]
,s.CurrentMember
)
) ON 1
FROM [Adventure Works];
我尝试查询,在列上选择[Measures]。[Assessment Patients Detail],非空([DimAssessment]。[Assessment Text]。&[Employee Wellness HRA],[DimAssessment]。[Question Text]。&[Do you Using tobacco products?],[DimPatient]。[Patient Key]。[Patient Key],生成([DimAssessment]。[Answer Text]。[Answer Text]。[Answer Text]),成员,[Di[CareManagement]中的行上的[Answer Text].CURRENTMEMBER*TAIL(非空([DimDate].[Full Date Alternate Key].[Full Date Alternate Key].[Full Date Alternate Key].MEMBERS[DimAssessment].[Answer Text].CURRENTMEMBER],[DimPatient].[Patient Key])为什么要进行激进编辑?我需要特定的记录示例,以patientid-20066为例,最新日期为2016-03-22。供参考:在非空([DimAssessment].[Assessment Text]”和[Employee Wellness HRA],[DimAssessment].[问题文本]列中选择[Measures].[Assessment Patients Detail]&[您是否使用烟草产品?]、[DimPatient]。[Patient Key]。[Patient Key]、[DimAssessment]。[Answer Text]。[Answer Text]、[DimDate]。[Full Date Alternate Key]。[Full Date Alternate Key]。[CareManagement]的行上的[DimPatient Key]。[Patient Key]。[Patient Key]。[Patient Key]。[DimAssessment]。[Answessment]乘法函数要求1参数使用元组集表达式。使用了字符串或数字表达式。@yugandhar-好的,我们可以更明确地在乘法的每一位周围添加{..}
,我将进行编辑。@whytheq-仅获取一条记录,我还需要剩余的记录,patientid-5250177092066(2016-03-22),25839@whytheq-只有一条记录,我还需要剩余记录,patientid-5250177092066(2016-03-22该patientid-20066的最新日期),25839Hi-whytheq,我也需要剩余记录,你能重播一下吗。