假设我有以下表格:
**Members**
Code Name
001 Sue
002 Peter
003 John
**Sales Info**
MemCode Date Type (A/B) Values
001 17/12/2013 A 100
001 17/11/2013 B 100
002 16/12/2013 A 100
我想拥有以下结果表
**Member Sales in 2013**
MemCode Jan(A) Jan(B) Feb(A) ... Nov(B) Dec(A) Dec(B)
001 0 0 0 100 100 0
002 0 0 0 0 100 0
我首先尝试使用查询确定一些数据(11月(A)和11月(B)),
var query = from tb in Members
join tb2 in SalesInfo on tb.MemCode equals tb2.MemCode
join tb3 in SalesInfo on tb.MemCode equals tb3.MemCode
where tb2.Type.Equals("A") &&
tb2.Date.Month.Equals(11)
tb3.Type.Equals("B") &&
tb3.Date.Month.Equals(11)
Select ...
然而,它没有返回数据,因为11月没有找到A记录,因此整行被过滤。有什么建议可以解决这个问题吗?
答案 0 :(得分:1)
问题是你要求(Type == A&& Type == B),这是不可能的。您可以先选择A,然后在子查询中获取相同日期的B值。
答案 1 :(得分:1)
确实,如果你想要类型A和类型B,你应该选择类型== A OR类型== B.没有行会满足这两个条件:)
这样的事情更简单,可能更有效
var query = from tb in Members
join tb2 in SalesInfo on tb.MemCode equals tb2.MemCode
where (tb2.Type.Equals("A") ||
tb2.Type.Equals("B")) &&
tb2.Date.Month.Equals(11)
Select ...