|
发表于 2025-3-19 14:02:11
|
显示全部楼层
广东省佛山市
sql = sql +" WITH MarketLatestDates AS ( " "
sql = sql +" SELECT TOP 2 交易日期 "
sql = sql +" FROM [dbo].[t_东财_龙虎榜] "
sql = sql +" WHERE 几日榜 = 1 "
sql = sql +" AND 股票代码 NOT LIKE '[89]%' "
sql = sql +" GROUP BY 交易日期 "
sql = sql +" ORDER BY 交易日期 DESC "
sql = sql +" ), "
sql = sql +" ValidStocks AS ( "
sql = sql +" SELECT "
sql = sql +" 股票代码, "
sql = sql +" MAX(股票名称) AS 股票名称 "
sql = sql +" FROM [dbo].[t_东财_龙虎榜] "
sql = sql +" WHERE 交易日期 IN (SELECT 交易日期 FROM MarketLatestDates) "
sql = sql +" AND 几日榜 = 1 "
sql = sql +" AND 股票代码 NOT LIKE '[89]%' "
sql = sql +" GROUP BY 股票代码 "
sql = sql +" HAVING COUNT(DISTINCT 交易日期) = 2 "
sql = sql +" ), "
sql = sql +" PrevDayData AS ( "
sql = sql +" SELECT "
sql = sql +" 股票代码, "
sql = sql +" 营业部名称, "
sql = sql +" SUM(CASE WHEN 买卖 = 1 THEN 买入金额 ELSE 0 END) AS 前一日买入, "
sql = sql +" SUM(CASE WHEN 买卖 = 0 THEN 卖出金额 ELSE 0 END) AS 前一日卖出 "
sql = sql +" FROM [dbo].[t_东财_龙虎榜] "
sql = sql +" WHERE 交易日期 = (SELECT MIN(交易日期) FROM MarketLatestDates) "
sql = sql +" AND 股票代码 IN (SELECT 股票代码 FROM ValidStocks) "
sql = sql +" AND 几日榜 = 1 "
sql = sql +" AND 营业部名称 NOT LIKE '%拉萨%' "
sql = sql +" AND 营业部名称 NOT IN ('机构专用', '深股通专用') "
sql = sql +" GROUP BY 股票代码, 营业部名称 "
sql = sql +" ), "
sql = sql +" CurrDayData AS ( "
sql = sql +" SELECT "
sql = sql +" 股票代码, "
sql = sql +" 营业部名称, "
sql = sql +" SUM(CASE WHEN 买卖 = 1 THEN 买入金额 ELSE 0 END) AS 今日买入, "
sql = sql +" SUM(CASE WHEN 买卖 = 0 THEN 卖出金额 ELSE 0 END) AS 今日卖出, "
sql = sql +" SUM(净额) AS 今日净额 "
sql = sql +" FROM [dbo].[t_东财_龙虎榜] "
sql = sql +" WHERE 交易日期 = (SELECT MAX(交易日期) FROM MarketLatestDates) "
sql = sql +" AND 股票代码 IN (SELECT 股票代码 FROM ValidStocks) "
sql = sql +" AND 几日榜 = 1 "
sql = sql +" AND 营业部名称 NOT LIKE '%拉萨%' "
sql = sql +" AND 营业部名称 NOT IN ('机构专用', '深股通专用') "
sql = sql +" GROUP BY 股票代码, 营业部名称 "
sql = sql +" ), "
sql = sql +" -- 步骤5: 将结果保存为中间CTE "
sql = sql +" Step5 AS ( "
sql = sql +" SELECT "
sql = sql +" COALESCE(p.股票代码, c.股票代码) AS 股票代码, "
sql = sql +" vs.股票名称, "
sql = sql +" COALESCE(p.营业部名称, c.营业部名称) AS 营业部名称, "
sql = sql +" (ISNULL(p.前一日买入, 0) + ISNULL(c.今日净额, 0)) AS 总仓位_原始数值 "
sql = sql +" FROM PrevDayData p "
sql = sql +" FULL OUTER JOIN CurrDayData c "
sql = sql +" ON p.股票代码 = c.股票代码 "
sql = sql +" AND p.营业部名称 = c.营业部名称 "
sql = sql +" INNER JOIN ValidStocks vs "
sql = sql +" ON COALESCE(p.股票代码, c.股票代码) = vs.股票代码 "
sql = sql +" WHERE (ISNULL(p.前一日买入, 0) + ISNULL(c.今日净额, 0)) > 5000000 "
sql = sql +" ) "
sql = sql +" "
sql = sql +" -- 步骤6: 最终汇总cha询(无需WITH) "
sql = sql +" SELECT "
sql = sql +" 股票代码, "
sql = sql +" 股票名称, "
sql = sql +" FORMAT(SUM(总仓位_原始数值)/10000.0, 'N2') AS 总仓位汇总_万元 "
sql = sql +" FROM Step5 "
sql = sql +" GROUP BY 股票代码, 股票名称 "
sql = sql +" ORDER BY SUM(总仓位_原始数值) DESC "
_启动窗口.记录集1.置连接 (_启动窗口.数据库连接1)
_启动窗口.记录集1.打开 (sql, #SQL语句, )
|
|