rst*_*kly 1 sql t-sql sql-server join sql-server-2008
我有2张桌子。第一个表是客户列表。
第二张表是这些客户在另一个字段中拥有的设备的列表,其中包含有关该客户的一些数据(客户问题)。问题是对于每个客户,可能会有多个问题。
我需要在这些表上进行联接,但只返回有两个问题的客户的结果。
麻烦的是,如果我加入OR,我会得到结果,其中包括只有这些问题之一的客户。
如果执行AND,则不会得到任何结果,因为每一行仅包含一个条件。
如何在T-SQL 2008中做到这一点?
除非我有误解,否则我认为您需要这样的东西(如果您只对有两个特定问题的客户感兴趣):
SELECT c.*
FROM Customer c
INNER JOIN CustomerEquipment e1 ON c.CustomerId = e1.CustomerId AND e1.Issue = 'Issue 1'
INNER JOIN CustomerEquipment e2 ON c.CustomerId = e2.CustomerId AND e2.Issue = 'Issue 2'
Run Code Online (Sandbox Code Playgroud)
或者,查找具有多个问题的任何类型的客户:
;WITH Issues AS
(
SELECT CustomerId, COUNT(*)
FROM CustomerEquipment
GROUP BY CustomerId
HAVING COUNT(*) > 1
)
SELECT c.*
FROM Customer c
JOIN Issues i ON c.CustomerId = i.CustomerId
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12455 次 |
| 最近记录: |