我在下面的查询中正确插入了它的编写方式。但是,在尝试修改查询以仅插入列' coord'的值时,我遇到了问题。最多5次。
例如,如果列' coord' =' North'。我需要限制“北方”的次数。可以插入。如果10条记录中有' coord' =' North'已经在数据库中5次,然后是' coord'的下一个值。应根据where子句标准选择。
SELECT ID, ROUTE into #TEMP_DISTANCE FROM TRAN_TBL
where handle = 21;
SELECT coord, travels into #temp_planned
FROM converse_TBL
WITH TravelPlansInfo AS
(
SELECT
ID,
Route,
COUNT(1) AS rowcnt
FROM
#TRAN_TBL
GROUP BY
ID,
Route
)
, rownum_matches AS (
SELECT
t.ID,
r.coord,
t.rowcnt,
ROW_NUMBER() OVER (PARTITION BY t.ID ORDER BY newid()) AS rownum
FROM
TravelPlansInfo t
JOIN
#temp_planned f ON f.travels != t.Route
)
INSERT into #temp_angle
SELECT ID, coord FROM rownum_matches rm WHERE rownum <= rowcnt
我试图通过使用游标来解决这个问题但是它很乱。如果可能的话,我宁愿使用不同的游标替代方案。输入将不胜感激。
答案 0 :(得分:1)
这种方法更简单。
insert into table
(f1, f2, etc)
select value1, value2, etc
where
(select count(*)
from wherever) < 5
这假设sql server在select查询中不需要where子句。