我正在 Power BI 中构建一个视觉效果,以可视化不同的业务线。我正在使用的帐户是在数据库中的不同段中构建的(c_Seg1、c_Seg2、c_Seg3..等),我试图排除特定段的值(c_Seg7,在这些帐户之一中也称为 Dim7)。 Seg7 是我正在使用的数据库中的一列。我还有 3 个详细信息组来过滤帐户 c_detailgroup = 'Group 1' 'Group 2', 'Group 3'。
这是我的 SQL 查询,它没有提取应有的值:
SELECT CASE
WHEN gl.Scenario = 1 THEN 'Actuals'
WHEN gl.Scenario = 6 THEN 'Budget'
ELSE 'UNKNOWN'
END AS Scenario ,
*
FROM [database].[dbo].[f_Trans_GL] gl
LEFT JOIN database.dbo.d_Dim0 d0 ON gl.Dim0 = d0.CustomerId
LEFT JOIN database.dbo.d_Dim8 d8 ON gl.Dim8 = d8.CustomerId
WHERE c_Seg7 NOT IN ('001','002','003','004')
AND gl.Scenario IN (1,
6)
AND gl.Entity = 1
AND c_detail group = 'Group 1'
OR c_detail group = 'Group 2'
OR c_detail group = 'Group 3'
这并没有拉入正确的信息,我尝试在Power BI中过滤Seg7,但仍然没有返回正确的值。
我尝试了排除段金额的不同变体,包括:
SELECT CASE
WHEN gl.Scenario = 1 THEN 'Actuals'
WHEN gl.Scenario = 6 THEN 'Budget'
ELSE 'UNKNOWN'
END AS Scenario ,
*
FROM [database].[dbo].[f_Trans_GL] gl
LEFT JOIN database.dbo.d_Dim0 d0 ON gl.Dim0 = d0.CustomerId
LEFT JOIN database.dbo.d_Dim8 d8 ON gl.Dim8 = d8.CustomerId
AND gl.Scenario IN (1,
6)
AND gl.Entity = 1
AND c_detail group = 'Group 1'
OR c_detail group = 'Group 2'
OR c_detail group = 'Group 3'
AND NOT c_Seg7 = '001'
AND NOT c_Seg7 = '002'
AND NOT c_Seg7 = '003'
我也尝试过在 Power BI 中过滤数据以获得正确的值,但没有成功。
您应该将 AND 条件放在括号内,以确保正确的逻辑分组。您还需要对 c_detail 组条件使用 AND 而不是 OR 来过滤“组 1”、“组 2”或“组 3”的记录。
SELECT CASE
WHEN gl.Scenario = 1 THEN 'Actuals'
WHEN gl.Scenario = 6 THEN 'Budget'
ELSE 'UNKNOWN'
END AS Scenario ,
*
FROM [database].[dbo].[f_Trans_GL] gl
LEFT JOIN database.dbo.d_Dim0 d0 ON gl.Dim0 = d0.CustomerId
LEFT JOIN database.dbo.d_Dim8 d8 ON gl.Dim8 = d8.CustomerId
WHERE gl.Scenario IN (1, 6)
AND gl.Entity = 1
AND (c_detail group = 'Group 1'
OR c_detail group = 'Group 2'
OR c_detail group = 'Group 3')
AND c_Seg7 NOT IN ('001', '002', '003', '004');