CRM - 查询具有 'incompatible' 值组合的记录(SQL,SSRS)

CRM - Query records with 'incompatible' combinations of values (SQL, SSRS)

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

在 CRM 外部,我有一个电子表格来显示哪些城市和州的组合可以,哪些不可以;例如,波士顿是马萨诸塞州的城市,但不是明尼苏达州、德克萨斯州或威斯康星州的城市。然而,阿灵顿是所有四个州的城市,等等:

问题是,没有什么可以阻止某人为城市输入 "Cambridge",为州输入 "TX"。我希望以某种方式使用此电子表格的数据作为输入并结合 SQL 查询来创建一个 SSRS 报告,该报告将显示具有不兼容组合的记录:

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

我可以在查询本身中将每个组合定义为有效或无效,但有些东西告诉我有一种更有效的方法来执行此操作,而不是定义我拥有的数百个可能的组合。

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

您需要 table 个有效组合。如果您还没有,则需要创建一个。最简单的形式类似于

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

您可以使用字段名称、城市和州创建引用 table。相应地填充它们作为 "Y" 交叉引用的位置。您最终会得到一个包含 19 行数据的 table。

在链接城市名称的主数据集中使用此 table 并修改您的查询,即: SELECT 姓名、城市、州 FROM contacts inner join reference_table on contacts.city = reference_table.city