我有两个数据集A和B。A有一个名为Paper的字段。B有两个字段,分别称为Subject和Grade。
这些字段中的数据如下所示:
+---------+-------+ +-----------------------------+
| Subject | Grade | | Paper |
+---------+-------+ +-----------------------------+
| English | A | | English Literature Autumn 1 |
| Maths | D | | Further Maths Spring 2 |
| Physics | F | | Physics |
+---------+-------+ +-----------------------------+
我通常使用的LookupSet如下所示:
=LookupSet(Fields!Paper.Value, Fields!Subject.Value, Fields!Grade.Value, "B")
当然,它只返回F,因为物理是唯一相同的字段。我需要一些能返回其余分数的东西。我试过了:
=LookupSet(Fields!Paper.Value, Fields!Subject.Value.IndexOf(Fields!Subject.Value) >= 0, Fields!Grade.Value, "B")
或
=LookupSet(Fields!Paper.Value, Fields!Subject.Paper.ToLowerInvariant().Contains(Fields!Subject.Value), Fields!Grade.Value, "B")
有没有一种方法可以在不改变数据的情况下实现它?
发布于 2018-01-22 10:04:57
如果源是SQL Server,则可以在T-SQL中使用LIKE执行此操作。
SQL示例
WITH
subject_grades
AS
(
SELECT tbl.* FROM (VALUES
( 'English', 'A')
, ( 'Maths', 'D')
, ( 'Physics', 'F')
) tbl ([Subject], [Grade])
)
,
subject_papers
AS
(
SELECT tbl.* FROM (VALUES
( 'English Literature Autumn 1')
, ( 'Further Maths Spring 2')
, ( 'Physics')
) tbl ([Paper])
)
SELECT
sp.Paper
, sg.Grade
FROM
subject_papers AS sp
LEFT JOIN subject_grades AS sg ON sp.[Paper] LIKE '%' + sg.[Subject] + '%'
结果
https://stackoverflow.com/questions/48357723
复制相似问题