文章摘要
这篇文章讨论了在数据库操作中可能出现的问题,特别是由于复制粘贴操作导致的潜在风险。文章指出,复制粘贴操作可能会引发错误结果,原因是由于未做出具体规定。通过提供一个具体的数据库操作示例,文章提醒读者在进行复制粘贴操作时要格外谨慎。文章还详细解释了如何创建一个包含PName、PSId、ChkDate和Price字段的临时表,并使用CTE(Common Table Expression)来为每个PName和PSId按ChkDate排序,同时应用DENSE_RANK()和ROW_NUMBER()函数生成排名。文章的核心内容突出了对数据库操作的具体实现和潜在风险的警示,提醒操作者在实际操作中应遵循详细的规定。
–by wls
—
–网络代码有风险
–复制粘贴须谨慎
————————————————————————
–你可以尝试一下这个,看看是什么结果。
–产生这种原因是因为没有做出具体规定。
————————————————————————
USE tempdb
GO
IF OBJECT_ID(‘t_TestbyWLS’,’U’) IS NOT NULL
DROP TABLE t_TestbyWLS
GO
CREATE TABLE t_TestbyWLS(PName NVARCHAR(),PSId INTEGER,ChkDate NVARCHAR(),Price FLOAT)
GO
INSERT INTO t_TestbyWLS VALUES
(‘A’,,”,.)
,(‘B’,,”,.)
,(‘B’,,”,.)
,(‘A’,,”,.)
,(‘B’,,”,.)
,(‘A’,,”,.)
,(‘A’,,”,.)
GO
WITH TempChkDate
AS
(
SELECT PName,PSId,ChkDate,Price,DENSE_RANK() OVER(PARTITION BY PName ORDER BY CAST(Chkdate AS INTEGER) DESC ) AS DRID,
ROW_NUMBER() OVER(PARTITION BY PName ORDER BY CAST(Chkdate AS INTEGER) DESC,Price DESC ) AS RID
FROM t_TestbyWLS
)
SELECT tcd.PName,tcd.PSID,tcd.ChkDate,tcd.Price,tcd.DRID,tcd.RID,t.tcd,t.tp
FROM TempChkDate AS tcd
CROSS APPLY(SELECT ChkDate AS tcd, Price AS tp
FROM TempChkDate
WHERE
–tcd.DRID=AND
tcd.PName=TempChkDate.PName AND
tcd.PSId=TempChkDate.PSId AND
TempChkDate.Drid=) AS t
WHERE tcd.DRID=GO
–by wls
—
–网络代码有风险
–复制粘贴须谨慎
————————————————————————
–你可以尝试一下这个,看看是什么结果。
–产生这种原因是因为没有做出具体规定。
————————————————————————
USE tempdb
GO
IF OBJECT_ID(‘t_TestbyWLS’,’U’) IS NOT NULL
DROP TABLE t_TestbyWLS
GO
CREATE TABLE t_TestbyWLS(PName NVARCHAR(),PSId INTEGER,ChkDate NVARCHAR(),Price FLOAT)
GO
INSERT INTO t_TestbyWLS VALUES
(‘A’,,”,.)
,(‘B’,,”,.)
,(‘B’,,”,.)
,(‘A’,,”,.)
,(‘B’,,”,.)
,(‘A’,,”,.)
,(‘A’,,”,.)
GO
WITH TempChkDate
AS
(
SELECT PName,PSId,ChkDate,Price,DENSE_RANK() OVER(PARTITION BY PName ORDER BY CAST(Chkdate AS INTEGER) DESC ) AS DRID,
ROW_NUMBER() OVER(PARTITION BY PName ORDER BY CAST(Chkdate AS INTEGER) DESC,Price DESC ) AS RID
FROM t_TestbyWLS
)
SELECT tcd.PName,tcd.PSID,tcd.ChkDate,tcd.Price,tcd.DRID,tcd.RID,t.tcd,t.tp
FROM TempChkDate AS tcd
CROSS APPLY(SELECT ChkDate AS tcd, Price AS tp
FROM TempChkDate
WHERE
–tcd.DRID=AND
tcd.PName=TempChkDate.PName AND
tcd.PSId=TempChkDate.PSId AND
TempChkDate.Drid=) AS t
WHERE tcd.DRID=GO
© 版权声明
文章版权归作者所有,未经允许请勿转载。