标签: sql-server-2005

如何更改表复合主键

CREATE TABLE [dbo].[INVS_ITEM_LOCATIONS]
([DEPARTMENT_CODE] [varchar](3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
 [IM_INV_NO] [numeric](10, 0) NOT NULL,
 [LOCATION_CODE] [varchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
 [CURR_QTY] [numeric](10, 0) NOT NULL CONSTRAINT [DF__INVS_ITEM__CURR___1352D76D]  DEFAULT ((0)),
 [DO_QTY] [numeric](10, 0) NOT NULL CONSTRAINT [DF__INVS_ITEM__DO_QT__1446FBA6]  DEFAULT ((0)),
 [ALLOC_QTY] [numeric](10, 0) NOT NULL CONSTRAINT [DF__INVS_ITEM__ALLOC__153B1FDF]  DEFAULT ((0)),
 [YOB_QTY] [numeric](10, 0) NOT NULL CONSTRAINT [DF__INVS_ITEM__YOB_Q__162F4418]  DEFAULT ((0)),
 [FOC_QTY] [numeric](10, 0) NULL CONSTRAINT [DF__INVS_ITEM__FOC_Q__17236851]  DEFAULT ((0)),
 [USER_CREATED] [varchar](25) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
 [DATE_CREATED] [datetime] NOT NULL,
 [USER_MODIFIED] [varchar](25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
 [DATE_MODIFIED] …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2005 composite-primary-key

0
推荐指数
1
解决办法
1万
查看次数

如何使用SQL仅在结果集中排序前20条记录?

我的要求是根据最常用的诊断获取诊断列表.因此,为了实现这一点,我在数据库的tblDiagnosisMst表中添加了一个名为DiagnosisCounter的列,每次用户选择它时,每个诊断增加1.所以,我的查询如下:

  select DiagnosisID,DiagnosisCode,Name from tblDiagnosisMst 
  where GroupName = 'Common' and RecStatus = 'A' order by DiagnosisCounter desc, 
  Name asc
Run Code Online (Sandbox Code Playgroud)

因此,此查询帮助我获取诊断列表,但按诊断降序排列,然后按字母顺序排列诊断名称.但是现在我的客户想要在顶部只显示20个最常用的诊断名称,然后所有名称应按字母顺序显示.但不幸的是,我陷入了困境.如果我得到你对这个问题的有用建议,那将是非常感激的.

sql sql-server sql-server-2005

0
推荐指数
1
解决办法
78
查看次数

Row_Number()按计算机列排序

我想在SQL Query中进行分页和排序.

这是我的查询

;WITH myCTE AS 
(SELECT (FirstName+''+LastName) as [User Name],
         ROW_NUMBER() OVER (ORDER BY FirstName) as RowID
         From [MyTable]) 

SELECT TOP 10 * FROM myCTE
    WHERE RowID > 10*(2-1) 
Run Code Online (Sandbox Code Playgroud)

它运行正常,但现在我想按计算列[用户名]对记录进行排序

所以我改变了这样的查询

;WITH myCTE AS 
(SELECT (FirstName+''+LastName) as [User Name],
         ROW_NUMBER() OVER (ORDER BY [User Name] ASC) as RowID
         From [MyTable]) 

SELECT TOP 10 * FROM myCTE
    WHERE RowID > 10*(2-1) 
Run Code Online (Sandbox Code Playgroud)

但它给出了这个错误:

Msg 207, Level 16, State 1, Line 2
Invalid column name 'User Name'.
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我如何使用ROW_NUMBER()OVER计算列?或者如何在SQL查询中实现排序和分页记录?

sql t-sql sql-server sql-server-2005 sql-server-2008

0
推荐指数
1
解决办法
1085
查看次数

T-SQL - 如何将DOWN舍入到最接近的.05

我使用的数据库是SQL Server 2005.我试图将值DOWN舍入到最接近的.05(镍).

到目前为止,我有:

SELECT ROUND(numberToBeRounded / 5, 2) * 5

几乎工程-我需要的是表达,当numberToBeRounded1.99,评估到1.95,而不是2.

sql t-sql sql-server-2005

0
推荐指数
1
解决办法
607
查看次数

SQL语句不适用于MS SQL 2005

  • SQL客户端:Ubuntu 14.04LTS
  • 数据库服务器:MS SQL Server 2005,通过odbc和Freetds访问.适用于我的其他MS SQL 2005服务器.
  • isql 2.2.14
  • 弗雷兹0.91
  • 文本编辑器:Windows 7的Notepad ++ 6.5.5正在通过Samba共享在Ubuntu上编辑我的.sql文件.
  • 不,我不能升级任何东西,我坚持我拥有的东西.

这让我很难过.我从i-net Clear Reports中复制并粘贴了一条SQL语句,并将其粘贴到Windows编辑器中,该编辑器正在编辑Ubuntu .sql文件,该文件只是一个文本文件.我已经连接到另一个MS SQL 2005服务器,没有问题通过isql和Perl.所以我遇到了一个带有大约10个连接的大型SQL语句的问题,并将语句简化为以下多行:

SELECT PKG.SO_ID
FROM
   PACKAGES AS PKG
WHERE
    PKG.tracking_no = '640038823199'
;
Run Code Online (Sandbox Code Playgroud)

此文件由多行带有unix行结尾组成.我的isql命令是:cat test1.sql | isql dsnname 'domain\username' password -v -b.

我使用-b作为批处理模式,因为我通过文件向isql发送输入.错误在第一行立即开始,但我仔细检查了语法,对于SQL Server 2005,'AS'在'PACKAGES AS PKG'中是可选的.

[37000][unixODBC][FreeTDS][SQL Server]Statement(s) could not be prepared.
[37000][unixODBC][FreeTDS][SQL Server]The multi-part identifier "PKG.SO_ID" could not be bound.
[ISQL]ERROR: Could not SQLExecute
[37000][unixODBC][FreeTDS][SQL Server]Incorrect syntax near the keyword 'FROM'.
[37000][unixODBC][FreeTDS][SQL Server]Statement(s) could not be …
Run Code Online (Sandbox Code Playgroud)

perl odbc sql-server-2005 freetds

0
推荐指数
1
解决办法
410
查看次数

SQL Server:带有条件的INSERT

Files-Favorites只有当我想要传递的值不在那里时,我才想插入到我的表中.

我试过了:

INSERT INTO [Files-Favorites](fileID,auditorID)  
     VALUES ('1', '34') 
      WHERE (fileID != '1' 
        AND auditorID != '34')
Run Code Online (Sandbox Code Playgroud)

这不起作用.我试图不INSERT重复值.我怎么把它关掉?这适用于Microsoft SQL Server 2005.

谢谢

sql sql-server sql-server-2005

0
推荐指数
1
解决办法
1273
查看次数

SQL - 将字符串转换为日期和时间

我需要将值转换为SQL Server DateTime.

数据如下所示:

  • 20161021-12:55:16.000
  • 20161021-13:22:09.974

我试过了

CONVERT(DATE, '20161021-12:55:16.000', 102) 
Run Code Online (Sandbox Code Playgroud)

它会抛出一个错误.

我可以在SQL中获得帮助,将这些样本转换为有效的日期时间吗?

这些值也是UTC.

我需要将它们转换为EST.

感谢您的帮助.

sql sql-server sql-server-2005 sql-server-2008 sql-server-2008-r2

0
推荐指数
1
解决办法
202
查看次数

VALUES后不允许子查询?

INSERT INTO t_MT_User (ID, Badge, Name, Scope, comp_code, dept_code, [status]) 
VALUES ((SELECT MAX(ID) + 1 FROM t_MT_User), @userBadgeNumber, @userName, @userScope, @companyCode, @departmentCode, 1)
Run Code Online (Sandbox Code Playgroud)

此查询将引发以下错误:

在此上下文中不允许子查询.只允许标量表达式.

如果我VALUES改为SELECT,我会得到另一个错误:

INSERT INTO t_MT_User (ID, Badge, Name, Scope, comp_code, dept_code, [status]) 
    SELECT 
        ((SELECT MAX(ID) + 1 FROM t_MT_User), 
         @userBadgeNumber, @userName, @userScope, @companyCode, 
         @departmentCode, 1)
Run Code Online (Sandbox Code Playgroud)

','附近的语法不正确.

我如何(SELECT MAX(ID) + 1 FROM t_MT_User)在这种背景下实现?

c# sql-server sql-server-2005

0
推荐指数
1
解决办法
74
查看次数

获取一年前的今天日​​期

我有一个脚本,我今天需要约会但是从一年前开始,但是我还需要它与时间采用以下格式.

 2017-11-07 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

我目前到了一个我去年约会的地方而不是00:00:00.000时间戳.

select  DATEADD(year, -1, GETDATE())
Run Code Online (Sandbox Code Playgroud)

这将返回运行查询的时间.

 2017-11-07 13:37:10.770
Run Code Online (Sandbox Code Playgroud)

这是一个where子句,因为我需要从去年的今天开始获取一些数据,所以寻找一个where子句,从去年午夜开始到23:00:00000结束

它适用于运行SQL Server 2005的客户端.

t-sql sql-server sql-server-2005

0
推荐指数
1
解决办法
98
查看次数

如何在SQL Server中获取用户的上次登录日期和时间?

如何在SQL Server中获取用户的上次登录日期和时间?

我想获取用户的上次登录日期和时间。SQL Server中是否有可用的内置SP?

sql-server sql-server-2005 sql-server-2008

0
推荐指数
1
解决办法
62
查看次数