CTE的使用确实可以简化代码,明晰逻辑,特别是在构建一些查询表的时候。以前用#tempTable方式比较麻烦。这一周够忙得,写这个算是带来一些乐趣。(*^__^*)。

需求描述:

1:按一定规则计算榜单的鲜花总得分
2:按 鲜花总分、城市数、商户总数、回应等比例计算Hot值
3:写入特定表

代码实现(伪代码):


--活动的总热度分值(CTE1)
WITH QUERY_MyListTotalScore AS
(
SELECT 
SUM(...)AS Score
,VoteID AS ListID
FROM [鲜花Tabel] WHERE (...)
),
--榜单城市的比例分值(CTE2)
QUERY_MyListCityCount AS
(
SELECT COUNT(*) AS CityCount,ListID,CityID,ShopCount
FROM [榜单商户]
JOIN [榜单] L ON (...)
JOIN [商户] S ON (...)
GROUP BY CityID,ListID,ShopCount
),
--最后生成结果(CTE3)
QUERY_MyListHot AS
(
SELECT ListID,CityID,Score,CityCount,ShopCount,........ AS Hot
FROM QUERY_MyListCityCount C
LEFT JOIN QUERY_MyListTotalScore T ON C.ListID = T.ListID
)
--相关表操作(SELECT、UPDATE、 INSERT、DELETE)
SELECT * FROM QUERY_MyListHot ORDER BY ListID

关键是CTE的多表连接使用。一般情况我们也就用一个CTE。这里要注意的就是多表CTE,要使用“,”分割。开始我习惯的用“;”提示错误,以为CTE不支持联用,险些就不用CTE了。

CTE

相关文章:

  • 2021-06-04
  • 2022-12-23
  • 2021-06-19
  • 2022-01-01
  • 2022-02-12
  • 2021-08-02
  • 2021-11-07
  • 2022-12-23
猜你喜欢
  • 2021-10-30
  • 2021-12-02
  • 2022-12-23
  • 2022-02-17
  • 2021-07-18
  • 2021-12-01
相关资源
相似解决方案