标签: sql-server-2008

如何删除sql server中的重复行?

我怎么能unique row idunique row id存在?

我的桌子是

col1  col2 col3 col4 col5 col6 col7
john  1    1    1    1    1    1 
john  1    1    1    1    1    1
sally 2    2    2    2    2    2
sally 2    2    2    2    2    2
Run Code Online (Sandbox Code Playgroud)

我希望在重复删除后留下以下内容:

john  1    1    1    1    1    1
sally 2    2    2    2    2    2
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些查询,但我认为它们依赖于行ID,因为我没有得到理想的结果.例如:

DELETE
FROM table
WHERE col1 IN (
    SELECT id
    FROM table
    GROUP BY id
    HAVING (COUNT(col1) > 1)
)
Run Code Online (Sandbox Code Playgroud)

mysql sql duplicates sql-server-2008 sql-delete

379
推荐指数
12
解决办法
80万
查看次数

在sql server中有效地将行转换为列

我正在寻找一种有效的方法将行转换为SQL服务器中的列,我听说PIVOT不是很快,我需要处理大量的记录.

这是我的例子:

   -------------------------------
   | Id | Value  | ColumnName    |
   -------------------------------
   | 1  | John   | FirstName     |
   | 2  | 2.4    | Amount        |
   | 3  | ZH1E4A | PostalCode    |
   | 4  | Fork   | LastName      |
   | 5  | 857685 | AccountNumber |
   -------------------------------
Run Code Online (Sandbox Code Playgroud)

这是我的结果:

---------------------------------------------------------------------
| FirstName  |Amount|   PostalCode   |   LastName  |  AccountNumber |
---------------------------------------------------------------------
| John       | 2.4  |   ZH1E4A       |   Fork      |  857685        |
---------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我该如何建立结果?

sql sql-server pivot sql-server-2008

362
推荐指数
3
解决办法
80万
查看次数

如何为现有列设置默认值

这在SQL Server 2008中不起作用:

ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'
Run Code Online (Sandbox Code Playgroud)

错误是:

关键字"SET"附近的语法不正确.

我究竟做错了什么?

t-sql sql-server default-value sql-server-2008

350
推荐指数
11
解决办法
61万
查看次数

如何避免SQL中的"除以零"错误?

我有这个错误消息:

Msg 8134,Level 16,State 1,Line 1遇到零误差.

编写SQL代码的最佳方法是什么,以便我再也不会看到此错误消息?

我可以做以下任何一种情况:

  • 添加一个where子句,使我的除数永远不为零

要么

  • 我可以添加一个case语句,以便对零进行特殊处理.

是使用NULLIF条款的最佳方式吗?

有没有更好的方法,或者如何实施?

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

339
推荐指数
9
解决办法
76万
查看次数

如何更改SQL Server中列的数据类型?

我正在尝试将列从a更改varchar(50)为a nvarchar(200).什么是更改此表的SQL命令?

t-sql sql-server alter-table type-conversion sql-server-2008

330
推荐指数
7
解决办法
64万
查看次数

在SQL Server Management Studio中连接不同的Windows用户(2005或更高版本)

SQL Server Management Studio 2005(或更高版本)中是否有一种方法可以更改Windows身份验证用户(就像在SQL Server 2000及更早版本中一样)?

这是常规连接属性对话框(请注意选择Windows Auth时灰色的UID/PWD):

对话

仅供参考 - 一种解决方法是使用,runas但我正在寻找一种解决方案,允许我跨多个服务器(以及跨多个域)使用多个Windows帐户.

sql sql-server-2008

320
推荐指数
8
解决办法
26万
查看次数

如何找到包含<text>的存储过程?

我需要在SQL Server 2008中搜索包含数据库字段名称或变量名称的存储过程.

t-sql sql-server stored-procedures sql-server-2008

295
推荐指数
9
解决办法
55万
查看次数

如何在SQL中选择一个月的第一天?

我只需要选择给定日期时间变量的月份的第一天.

我知道使用这种代码很容易:

select CAST(CAST(YEAR(@mydate) AS VARCHAR(4)) 
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)
Run Code Online (Sandbox Code Playgroud)

但这不是很优雅,也可能不是很快.

有一个更好的方法吗?我正在使用SQL Server 2008.

sql t-sql sql-server datetime sql-server-2008

285
推荐指数
10
解决办法
71万
查看次数

实体框架:已经有一个与此命令关联的开放DataReader

我正在使用实体框架,偶尔我会得到这个错误.

EntityCommandExecutionException
{"There is already an open DataReader associated with this Command which must be closed first."}
   at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands...
Run Code Online (Sandbox Code Playgroud)

即使我没有做任何手动连接管理.

这个错误间歇性地发生.

触发错误的代码(为了便于阅读而缩短):

        if (critera.FromDate > x) {
            t= _tEntitites.T.Where(predicate).ToList();
        }
        else {
            t= new List<T>(_tEntitites.TA.Where(historicPredicate).ToList());
        }
Run Code Online (Sandbox Code Playgroud)

使用Dispose模式以便每次都打开新连接.

using (_tEntitites = new TEntities(GetEntityConnection())) {

    if (critera.FromDate > x) {
        t= _tEntitites.T.Where(predicate).ToList();
    }
    else {
        t= new List<T>(_tEntitites.TA.Where(historicPredicate).ToList());
    }

}
Run Code Online (Sandbox Code Playgroud)

仍有问题

如果连接已经打开,EF为什么不重用连接?

linq entity-framework sql-server-2008

279
推荐指数
6
解决办法
15万
查看次数

SQL Server - INSERT后的返回值

我试图在INSERT声明后得到一个键值.示例:我有一个包含属性name和id的表.id是生成的值.

    INSERT INTO table (name) VALUES('bob');
Run Code Online (Sandbox Code Playgroud)

现在我想在同一步骤中恢复身份.这是怎么做到的?

我们正在使用Microsoft SQL Server 2008.

sql sql-server sql-server-2008

279
推荐指数
8
解决办法
48万
查看次数