表A 是有userid ,data1,data2,data3,data4,data5
表B 是有userid ,money 两个字段为省略起见 现在表A只写到 data 实际上可能会去到data100现在想得到的结果是表A的全部内容 再加上表B按userid的汇总.也就是大概是这个样子
表A
userid data1 data2 data3 data4 data5
1 1 2 3 4 5
2 6 6 6 6 6
3 7 7 7 7 7
表B
userid money
1 1
1 2
1 3
2 4
2 5
2 6
3 3
要求查询的结果:
userid data1 data2 data3 data4 data5 money
1 1 2 3 4 5 6
2 6 6 6 6 6 15
3 7 7 7 7 7 3如果 数据字段 非常多例如去到data100 那么这个sql语句会不会非常的长?
表B 是有userid ,money 两个字段为省略起见 现在表A只写到 data 实际上可能会去到data100现在想得到的结果是表A的全部内容 再加上表B按userid的汇总.也就是大概是这个样子
表A
userid data1 data2 data3 data4 data5
1 1 2 3 4 5
2 6 6 6 6 6
3 7 7 7 7 7
表B
userid money
1 1
1 2
1 3
2 4
2 5
2 6
3 3
要求查询的结果:
userid data1 data2 data3 data4 data5 money
1 1 2 3 4 5 6
2 6 6 6 6 6 15
3 7 7 7 7 7 3如果 数据字段 非常多例如去到data100 那么这个sql语句会不会非常的长?
ISNULL(B.[money], 0) AS [money]
FROM A
LEFT JOIN ( SELECT userid ,
SUM([money]) AS [money]
FROM B
GROUP BY userid
) AS B ON a.userid = B.userid;
ISNULL(B.[money], 0) AS [money]
FROM A
CROSS APPLY ( SELECT SUM([money]) AS [money]
FROM B
WHERE userid = a.userid
) AS B;