--select c.customerid ,COUNT(o.orderid) from Customers c cross apply Orders o /*outer/cross*/
--where c.city='北京' and c.customerid=o.customerid
--group by c.customerid
--having COUNT(o.orderid)<3
--order by COUNT(o.orderid) asc
4 个解决方案
#1
cross apply 后面可以直接跟函数这些
如果是关联的话 就不可以了
你可以查下一下联机丛书 CORSS APPLY的用法
如果是关联的话 就不可以了
你可以查下一下联机丛书 CORSS APPLY的用法
#2
这个东西好像有点不受欢迎
#4
cross apply 后面可以跟表值函数
创建自定义表值函数 获取此id教师下的学生列表
create function getStudent(@tid int)
returns @tmp table(sid int ,tid int,sName varchar(10))
as
begin
with cte(sid, tid, sName)
as
(
select sid, tid, sName from Student where tid=@tid
)
insert into @tmp select * from cte
return
end
--查询调用 与上面不用表值函数的写法对照一下,会好理解点
select * from Teacher t cross apply getStudent(t.tid)--在查询中调用表值函数
--查询结果
tid tName sid tid sName
----------- ---------- ----------- ----------- ----------
1 li 1 1 zhou
1 li 2 1 wu
2 zhang 3 2 zheng
2 zhang 4 2 wang
(4 行受影响)
#1
cross apply 后面可以直接跟函数这些
如果是关联的话 就不可以了
你可以查下一下联机丛书 CORSS APPLY的用法
如果是关联的话 就不可以了
你可以查下一下联机丛书 CORSS APPLY的用法
#2
这个东西好像有点不受欢迎
#3
#4
cross apply 后面可以跟表值函数
创建自定义表值函数 获取此id教师下的学生列表
create function getStudent(@tid int)
returns @tmp table(sid int ,tid int,sName varchar(10))
as
begin
with cte(sid, tid, sName)
as
(
select sid, tid, sName from Student where tid=@tid
)
insert into @tmp select * from cte
return
end
--查询调用 与上面不用表值函数的写法对照一下,会好理解点
select * from Teacher t cross apply getStudent(t.tid)--在查询中调用表值函数
--查询结果
tid tName sid tid sName
----------- ---------- ----------- ----------- ----------
1 li 1 1 zhou
1 li 2 1 wu
2 zhang 3 2 zheng
2 zhang 4 2 wang
(4 行受影响)