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

时间:2019-03-20 16:23:01

标签: tsql reporting-services dynamics-crm dynamics-crm-2011 crm

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

在CRM外部,我有一个电子表格来显示哪些城市和州的组合可以,哪些不可以;例如,波士顿是马萨诸塞州的城市,但不是MN,TX或WI的城市。但是,阿灵顿是四个州中的一个城市,等等:

enter image description here

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

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

我可以在查询本身中仔细检查并定义每个组合的有效与否,但是有一些事情告诉我,有一种更有效的方法可以代替定义数百种可能的组合。

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

您可以使用字段名称“城市”和“州”创建参考表。相应地填充它们与ref交叉的“ Y”。您最终将得到一个包含19行数据的表。

在链接到城市名称的主要数据集中使用此表并修改您的查询,即: 选择名称,城市,州 FROM contacts内部联接contact.city = reference_table.city

上的内部reference_table