标签: sql-server-2005

更新sql server 2005中的表的查询

我有一张叫做员工的桌子

empID name   startdate       Middate      DEptID
1     kumar  2011-04-30      2005-09-13    1
2     kiran  2011-05-23      2006-08-13    1
3     kishor 2008-04-13      2009-04-23    6
4     anu    2009-09-03      2000-06-13    1
5     priya  2010-05-04      2010-04-13    6
6     sweth  2011-07-13      2007-12-16    1
7     manu   2011-08-15      2006-12-07    6
Run Code Online (Sandbox Code Playgroud)

有什么方法可以更新此表,以便所有员工的startdate = Middate

empID name   startdate       Middate      DEptID
1     kumar  2005-09-13      2005-09-13    1
2     kiran  2006-08-13      2006-08-13    1
3     kishor 2009-04-23      2009-04-23    6
4     anu    2000-06-13      2000-06-13    1
5     priya  2010-04-13      2010-04-13    6
6     sweth  2007-12-16      2007-12-16    1
7 …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005

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

如果列不存在alter table

我使用生成的SQL脚本(sql 2k5)将列添加到表中.

我需要添加"检查是否存在",因为我的客户有时会运行脚本两次.(我无法控制这部分,这种情况一次又一次地发生)

我发现了一种加入sysobjects和syscolumns的方法,它可以工作.

我的问题是我必须在另一个表中添加一列,其中列不在表的末尾.

对于这个,SQL正在生成那么长的代码...用新列创建新的临时表,从旧表填充,删除旧表,最后重命名临时表.

这里的问题是这个脚本的脚本中有很多GO和事务...

我能做什么?

1.)删除所有GO - s?(不喜欢这个主意)

2.)在每个GO对之间添加我的IF?(不喜欢这个主意)

3.)是否有另一种有意义的方式,实施起来并不难

我无法想到任何事情,我可以检查发布版本,或者任何东西,而不仅仅是我的sysobjects和syscolumns join,但问题将是相同的.

因为GO-s,当它到达BEGIN的END时,我的If将被"遗忘"......

if-statement transactions sql-server-2005

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

SQL Server 2005隔离级别更改服务重启,如何停止?

每当我将隔离级别从read committed更改为re uncommitted时.然后我重新启动SQL Server服务(2005)它会将隔离级别重置为read committed.

有没有办法阻止这种情况发生?(更改SQL Server重启时的值)

sql sql-server sql-server-2005

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

选择特定的格式日期

我想以特定格式选择日期列 - 假设我的日期格式是MM/dd/yyyy.我想选择它dd/MMM/yyyy

我可以这样做:

SELECT CONVERT(VARCHAR(11), myDateColumn, 106)
Run Code Online (Sandbox Code Playgroud)

问题是我想选择它作为类型DATETIME,而不是VARCHAR因为我想在这个列上排序我的网格.

c# t-sql sql-server sql-server-2005 datetime-format

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

SQL Query查找第N个最高薪水

如何在不使用MS SQL中的任何子查询的情况下找到第N个最高工资?

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

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

Asp.net中内联查询中的SQL查询问题

我的sql表结构是这样的

ID  DataName
1   Lipsum lorem 
3   lipsum's lorem
Run Code Online (Sandbox Code Playgroud)

我在asp.net中的内联查询就是这样

select * from table where DataName like 'lipsum's lorem'
Run Code Online (Sandbox Code Playgroud)

它给出了以下错误:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 's'.
Msg 105, Level 15, State 1, Line 1
Unclosed quotation mark after the character string ''.
Run Code Online (Sandbox Code Playgroud)

我不想创建一个存储过程来防止这种情况,我希望使用内联查询来解决这个问题.

sql sql-server asp.net sql-server-2005 sql-server-2008

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

尝试创建GRANT权限脚本

我试图为数据库创建一个GRANT脚本.

DB不能使用任何内置角色,因此我需要为存储过程重新创建db_reader,db_writer和EXEC到分配给此服务帐户的GRANT脚本中.

我试图自动化这个,而不是查看数据库中的每个项目并手动创建它.

到目前为止我有这个:

/* USER_TABLE */
select   'GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.' + name + ' TO [DOMAIN\user]' from sys.objects where  type  =  'U' order by  name;

/* INTERNAL_TABLE */
select   'GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.' + name + ' TO [DOMAIN\user]' from sys.objects where  type  =  'IT' order by  name;

/* VIEW */
select   'GRANT SELECT ON dbo.' + name + ' TO [DOMAIN\user]' from sys.objects where  type  =  'V' order by  name;

/* …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2005

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

sql中MAX的简单问题

我有表行:

ID          CountryCode Status
----------- ----------- -----------
2           PL          1
3           PL          2
4           EN          1
5           EN          1
Run Code Online (Sandbox Code Playgroud)

并通过查询

    SELECT [CountryCode]
      ,MAX([Status])
  FROM [TestTable]
  GROUP BY CountryCode,Status
Run Code Online (Sandbox Code Playgroud)

我想得到:

CountryCode Status
----------- -----------
PL          2
EN          1
Run Code Online (Sandbox Code Playgroud)

但我得到:

CountryCode Status
----------- -----------
EN          1
PL          1
PL          2
Run Code Online (Sandbox Code Playgroud)

这个查询有什么问题?

最好的祝福

编辑

好吧,Thanx for manz答案,但我没有添加部分查询,这是:

Having Status != 3
Run Code Online (Sandbox Code Playgroud)

所以我认为我必须在组中使用Status:/

用于创建和填充表格的脚本:

USE [DatabaseName]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TestTable](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [CountryCode] …
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2005

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

如何在asp.net中处理KeyPress或KeyDown事件?

KeyPressKeyDown事件不可用,System.Web.UI.WebControls.TextBox只有一种方法可以使用Java-Scripts,但是想在这些事件中触发一些Sql查询.是否可以从JavaScript执行Sql查询?如果没有,那我该怎么做?

javascript c# asp.net events sql-server-2005

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

在表值函数中使用CTE的问题

我试图避免在我的项目中使用标量值函数,所以我决定尝试使用CTE将其中一个转换为表值函数.

我知道标量值函数的性能很差,因为它们必须为每一行执行,而SQL服务器无法以任何方式对其进行优化(即它充当黑盒子).

这是我第一次尝试将其转换为表值函数...

CREATE FUNCTION [dbo].[fn_get_job_average] (@jobnumber VARCHAR(50))
RETURNS TABLE AS RETURN
(   

  WITH JobAverage AS
  (
    SELECT job.Jobnumber, CAST(AVG(CAST(jobMark.Mark AS DECIMAL(18,1))) AS DECIMAL(18,1)) AS Average
    FROM  job 
      INNER JOIN jobMark 
        ON job.Guid = jobMark.Guid
    WHERE job.Jobnumber = @jobnumber
    GROUP BY job.Jobnumber
  )
  SELECT Jobnumber,
    CASE
      WHEN EXISTS(SELECT * FROM JobAverage) THEN Average
      ELSE 0.0 -- This never executes???, i.e. for job records that don't have a mark nothing is returned
    END AS Average
  FROM JobAverage
)
Run Code Online (Sandbox Code Playgroud)

我想输出一个包含工号和平均分数的表格.

对于有标记的工作,似乎没问题.也就是说,平均值与jobnumer一起返回.

对于没有商标的工作,似乎出错了.语句的ELSE部分不执行.也就是说,作为平均工作,我不会返回0.0.没有记录返回.我错过了什么吗? …

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

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