sql语句参数问题。。。。。。。。。。。。。。。。。

sam_jiang 2015-08-25 04:00:50
一个这样的语句,需要改写一下,怎么弄呢?请不吝指教。


insert into T_A
([id],a,b)
(
select avg(1) as [id],
round(avg(Left),2) as a,
sum(case when Left >3 then 1 else 0 end) as b, //此行的3,要变成根据v_a中的一个字段检索出表v_b的字段mv的值
from v_a
union all
select avg(2) as [id],
round(avg(Left),2) as a,
sum(case when right>4 then 1 else 0 end) as b, //此行的4,要变成根据v_a中的一个字段检索出表v_b的字段nv的值
from v_a
union all
)


怎么改写呢
...全文
127 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2015-08-25
  • 打赏
  • 举报
回复
/* 测试数据
WITH v_a([Left],[Right],STD)AS(
SELECT 1.2,2.1,1 UNION ALL
SELECT 1.13,1.23,1 UNION ALL
SELECT 1.5,1.6,2 UNION ALL
SELECT 3.1,4.1,1 UNION ALL
SELECT 3.2,4.2,1 UNION ALL
SELECT 3.3,4.3,1 UNION ALL
SELECT 3.4,4.4,1 UNION ALL
SELECT 3.5,4.5,1 UNION ALL
SELECT 3.6,4.6,1 UNION ALL
SELECT 3.7,4.7,1 UNION ALL
SELECT 2.3,4.8,1
)
,v_b(STD,mv,nv)AS(
SELECT 1,3,4 UNION ALL
SELECT 2,5,6
)*/
select v_b.STD as [id],
round(avg(v_a.[Left]),2) as a,
sum(case when v_a.[Left] > v_b.mv then 1 else 0 end) as b
from v_b
JOIN v_a
ON v_a.STD = v_b.STD
GROUP BY v_b.STD

         id                                       a           b
----------- --------------------------------------- -----------
1 2.840000 7
2 1.500000 0
sam_jiang 2015-08-25
  • 打赏
  • 举报
回复
上面v_a表不全 v_a表是数据表 Left Right STD 1.2 2.1 1 1.13 1.23 1 1.5 1.6 2 3.1 4.1 1 3.2. 4.2 1 3.3 4.3 1 3.4 4.4 1 3.5 4.5 1 3.6 4.6 1 3.7 4.7 1 2.3 4.8 1
sam_jiang 2015-08-25
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao 的回复:
请提供例子数据、期望结果。
T_A表 id a b 1 6.1 7 //7是根据v_a表中Left字段的值与v_b表中mv的值(3)大小关系统计出来,v_a与v_b靠字段STD连接 2 2.1 8 //8是根据v_a表中Left字段的值与v_b表中mv的值(4)大小关系统计出来,v_a与v_b靠字段STD连接 v_a表 Left Right STD 1.2 2.1 1 1.13 1.23 1 1.5 1.6 2 v_b表 STD mv nv 1 3 4 2 5 6
Tiger_Zhao 2015-08-25
  • 打赏
  • 举报
回复
请提供例子数据、期望结果。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧