declare @fieldForceCounter as int
declare @SaleDate as dateTime
declare @RandomNoSeed as decimal
set @fieldForceCounter = 1
set @SaleDate = '1 Jan 2009'
set @RandomNoSeed = 0.0
WHILE @fieldForceCounter <= 3
BEGIN
while @SaleDate <= '1 Dec 2009'
begin
INSERT INTO MonthlySales(FFCode, SaleDate, SaleValue) VALUES(@fieldForceCounter, @SaleDate, RAND(@RandomNoSeed))
set @saleDate = @saleDate + 1
set @RandomNoSeed = Rand(@RandomNoSeed) + 1
end
set @SaleDate = '1 Jan 2009'
set @fieldForceCounter = @fieldForceCounter + 1
END
GO
Run Code Online (Sandbox Code Playgroud)
该 T-SQL 命令应该在“ SaleValue”表的“ MonthlySales”列中插入随机值。 …
最好的方法是什么?
我需要生成一个5位长的字符串,其中所有字符都是数字.但是,我需要能够执行此'x'次(用户变量)并将此随机字符串存储在数据库中.此外,我不能两次生成相同的字符串.6个月后将删除旧琴弦.
伪代码
DECLARE @intIterator INT,
@intMax
SET @intIterator = 1
SET @intMax = 5 (number of strings to generate)
WHILE @intIterator <= @intMax
BEGIN
-- GENERATE RANDOM STRING OF 5 NUMERIC DIGITS
???
-- INSERT INTO DB IF DOESN'T ALREADY EXIST
INSERT INTO TSTRINGS
SELECT @RANDOMSTRING
IF @@ERROR = 0
SET @intIterator = @intIterator + 1
END
Run Code Online (Sandbox Code Playgroud)
我知道这可能不是最好的方法,所以建议值得赞赏.但真正寻找有关如何生成数字5长度字符串的想法.
我已经阅读了很多关于我们是否应该将主键作为标识列的文章,但我仍然感到困惑.
使列具有标识的优点在于它可以在连接中提供更好的性能并提供数据一致性.但是有一个与标识相关的主要缺点,即当INSERT语句失败时,IDENTITY值仍会增加如果事务被回滚,则新的IDENTITY列值不会回滚,因此我们最终会在排序方面出现空白.我可以使用GUID(通过使用NEWSEQUENTIALID),但它会降低性能.
我需要一些SQL Server 2005 SQL查询的帮助.以下是要查询的表中数据的示例:
Id PersonId PayrollNum ContractId PayrollFrom PayrollTo --------------------------------------------------------------------------- 1 432642 85110892 1 01/05/2009 31/05/2009 2 432642 85110892 1 01/06/2009 30/06/2009 3 432642 85110892 1 01/07/2009 31/07/2009 4 432642 85110892 2 01/05/2009 31/05/2009 5 432642 85110892 2 01/06/2009 30/06/2009 6 432642 85110892 2 01/07/2009 31/07/2009 7 432642 85110892 2 01/08/2009 31/08/2009 8 432642 35110892 1 01/06/2009 30/06/2009 9 432642 35110892 1 01/05/2009 31/05/2009 10 432642 35110892 1 01/07/2009 31/07/2009
(我希望格式化好 - 用这个东西做表很难!)
我需要的输出如下:
Id -- 1 4 9 …
假设我有许多具有完全相同模式的sql server数据库.有没有可以编写存储过程并申请所有数据库的地方?如果我为每个数据库创建存储过程,在需要时,我必须全部更新它们.
>SELECT instmax
FROM
(SELECT instmax,
rownum r
FROM
( SELECT * FROM pswlinstmax ORDER BY instmax DESC NULLS LAST
)
)
WHERE r = 2;
INSTMAX
-------
1049
>SELECT instmax
FROM
(SELECT instmax,
rownum
FROM
(SELECT * FROM pswlinstmax ORDER BY instmax DESC
)
)
WHERE rownum=2;
**NO RETURNED ROW**
Run Code Online (Sandbox Code Playgroud)
为什么会给出不同的结果?我想对此进行详细解释.
如何订购数据然后在TSQL(SQL Server)中过滤?
我尝试过这样的事情:
SELECT [Job].*,
ROW_NUMBER() OVER (ORDER BY [Job].[Date]) AS RowNum
FROM [Job]
ORDER BY Rank
WHERE RowNum >= @Start AND RowNum < @End
Run Code Online (Sandbox Code Playgroud)
不行.我也尝试使用子查询,抛出:
除非还指定了TOP或FOR XML,否则ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效.
我不想使用TOP或FOR XML.
怎么解决这个?
我有这个伟大的pyodbc lib.我尝试下面的代码,它应该插入一行并返回行ID但它不起作用.顺便说一句,我在服务器上使用sql server 2005,客户端是windows os
...
con = pyodbc.connect('conectionString', autocommit = True)
cur = con.execute(
"insert into sometable values('something');
select scope_identity() as id"
)
for id in cur:
print id
...
Run Code Online (Sandbox Code Playgroud)
一些想法?
我想深究这一点,因为这让我感到困惑.任何人都可以解释我何时应该在我的脚本中使用GO语句?
据我所知,GO语句不是T-SQL语言的一部分,而是用于将一批语句发送到SQL服务器进行处理.
当我在查询分析器中运行以下脚本时,它似乎运行正常.然后我关闭窗口,它会显示一个警告:
"有未提交的交易.您是否希望在关闭窗口之前提交这些交易?"
BEGIN TRANSACTION;
GO
ALTER PROCEDURE [dbo].[pvd_sp_job_xxx]
@jobNum varchar(255)
AS
BEGIN
SET NOCOUNT ON;
UPDATE tbl_ho_job SET delete='Y' WHERE job = @job;
END
COMMIT TRANSACTION;
GO
Run Code Online (Sandbox Code Playgroud)
但是,如果我在ALTER语句的末尾添加一个GO就可以了(如下所示).怎么会?
BEGIN TRANSACTION;
GO
ALTER PROCEDURE [dbo].[pvd_sp_xxx]
@jobNum varchar(255)
AS
BEGIN
SET NOCOUNT ON;
UPDATE tbl_ho_job SET delete='Y' WHERE job = @job;
END
GO
COMMIT TRANSACTION;
GO
Run Code Online (Sandbox Code Playgroud)
我想删除所有的GO,但是它抱怨alter procedure语句必须是查询批处理中的第一个语句?这只是我必须坚持的要求吗?
这看起来很奇怪,因为如果我BEGIN TRANSACTION和GO ....该语句被发送到服务器进行处理并开始一个事务.
接下来是ALTER过程,一个COMMIT TRANSACTION和一个GO(因此将这些语句发送到服务器进行处理,提交完成之前开始的事务),当我关闭窗口时它是怎么回事?当然,我已经满意alter procedure语句是批处理中的第一个.怎么抱怨未提交的交易.
任何帮助将非常感谢!
在SqlServer中,我们有1个表 - 产品.它的一些记录包含双字节字符(如中文)和单字节字符(如英语).问题是如何查询包含双字节字符的记录.非常感谢你.
sql ×9
sql-server ×6
t-sql ×3
random ×2
identity ×1
max ×1
oracle ×1
plsql ×1
primary-key ×1
pyodbc ×1
python ×1
rownum ×1
sql-order-by ×1