sql - T-SLQ 你可以在 on 子句中使用聚合吗?
问题描述
我有 2 个调用表。表 1 有呼叫/客户信息。表 2 有通话记录,通话期间发生了什么。我需要将表 2 加入表 1,但只为第一部手机拉“时间”。通话记录中有多个“电话”,第一个需要时间。
Table 1 Table 2 Goal
Call ID Client State Call ID Method Time Call ID Client State Time
1 John TX 1 Inbound 11:00 1 John TX 11:01
2 Mike CA 1 Phone 11:01 2 Mike CA 11:31
3 Susan NA 1 Answer 11:01 3 Susan NA ...
4 ... .... 1 Phone2 11:05 4
1 Call End 11:22 . etc
2 Inbound 11:30
2 Phone 11:31
有点想做这样的事情。
SELECT *
FROM Table1 t1 on Table2 t2 = t1.call_id = t2.call_id and t2.Method like '%Phone%'
但这会拉所有电话时间。需要 MIN(电话)。您可以在 on 子句中使用聚合吗?
解决方案
不,您不能在on
子句中使用聚合。相反,使用apply
:
SELECT *
FROM Table1 t1 CROSS APPLY
(SELECT TOP (1) t2.*
FROM Table2 t2
WHERE t2.call_id = t1.call_id and
t2.Method like '%Phone%'
ORDER BY phone
) t2;
推荐阅读
- postgresql - 更新查询在 Java 应用程序中不起作用
- visual-studio-code - 如何在 VSCode 中为 JSONL 配置语法高亮 - “JSON-Lines” - 当文件类型不受支持时
- reactjs - ReactJS useGesture:类型错误集不是函数
- javascript - 反应中的自定义嵌套复选框
- .net-core - 跨平台统一独立敏感数据管理
- javascript - 如何根据账户获取 AWS 成本?
- ruby - 如何更改线程中的 var?
- java - 如何比较/查找 XMLGregorianCalendar 日期列表
- javascript - Javascript 表单验证:onchange 函数不起作用
- node.js - 使用点语法解析嵌套主体