我有一个现有的表Books
,如下所示:
Book ISBN | Ranking | Price | Lent(true/false)
现在我想从Books
创建一个新表格,但排名从1到20,排名依赖于排名。
所以新表将如下所示:
Ranking | Book ISBN | Price | Lent
我希望这是有道理的,因为我试图抽象我正在为项目做的事情。我认为这类似于连接两个表以及在排名上设置的条件。一些样本数据:
书籍:
12345222 | 1 | $10 | FALSE
98001333 | 3 | $15 | TRUE
78899444 | 4 | $20 | FALSE
新表:
1 | 12345222 | $10 | FALSE
2 | 00000000 | $0 | FALSE
3 | 98001333 | $15 | TRUE
4 | 78899444 | $20 | FALSE
5 | 00000000 | $0 | FALSE
...
还有其他更好的方法来创建这个新表吗?谢谢。
答案 0 :(得分:1)
;
WITH cte
AS ( SELECT TOP 20
ranking = ROW_NUMBER() OVER ( ORDER BY c.name )
FROM sys.columns c
)
INSERT INTO newTable
SELECT cte.ranking
, '00000000' AS ISBN
, 0 AS price
, 'FALSE' AS Lent
FROM cte
LEFT JOIN Books b ON cte.ranking = b.ranking
WHERE b.ISBN IS NULL
UNION ALL
SELECT ranking
, ISBN
, price
, Lent
FROM books;