CRM - 使用“不兼容”值组合查询记录(SQL,SSRS)

问题描述 投票:1回答:2

我的CRM环境中有一个记录类型,其中有两个查找。某些值的组合不是“有效”,但在系统中没有约束来阻止该条目。为了说明,我将使用一小部分城市和州来解释。

在CRM的外部,我有一个电子表格来显示哪些城市和州的组合是好的,哪些不是;例如,波士顿是MA的一个城市,但不是MN,TX或WI。然而,阿灵顿是所有四个州的城市,等等:

enter image description here

问题在于没有什么可以阻止某人为城市设置“剑桥”,例如为国家设置“TX”。我希望以某种方式使用此电子表格的数据作为输入结合SQL查询来创建SSRS报告,该报告将显示具有不兼容组合的记录:

SELECT name, city, state
FROM contacts
WHERE [magic for the query to know there's no Cambridge in Texas, etc.]

我可以通过查询本身来定义每个组合是否有效,但有些东西告诉我有一种更有效的方法来实现这一点,而不是定义我拥有的几百种可能的组合。

我正在配置字段,因此强制输入有效,但我需要识别并清理现有条目。

tsql reporting-services dynamics-crm dynamics-crm-2011 crm
2个回答
2
投票

您需要一个有效组合表。如果您还没有,那么您需要创建一个。最简单的形式就像是

CREATE TABLE CityState(City varchar(50), State varchar(2))

INSERT INTO CityState VALUES
('Boston', 'MA'),
('Arlington', 'MN'),
('Arlington', 'MA'),
('Arlington', 'TX'),
('Arlington', 'WI')

等等...

一旦你有了这个,你的查询将是这样的

SELECT c.name, c.city, c.state,
       CASE s.City WHEN NULL THEN 0 ELSE 1 END AS IsValid
    FROM contacts c
        LEFT JOIN CityState s ON c.city = s.City AND c.state = s.State

1
投票

您可以使用字段名称City和State创建引用表。相应地填充它们交叉引用的位置为“Y”。最终会得到一个包含19行数据的表。

在主数据集中使用此表链接城市名称并修改您的查询,即:SELECT名称,城市,州FROM联系人内联系reference_table on contacts.city = reference_table.city

© www.soinside.com 2019 - 2024. All rights reserved.