标签: sql-server-2005

无法绑定多部分标识符

我在SO上看到过类似的错误,但我找不到解决问题的方法.我有一个SQL查询,如:

SELECT DISTINCT
        a.maxa ,
        b.mahuyen ,
        a.tenxa ,
        b.tenhuyen ,
        ISNULL(dkcd.tong, 0) AS tongdkcd
FROM    phuongxa a ,
        quanhuyen b
        LEFT OUTER JOIN ( SELECT    maxa ,
                                    COUNT(*) AS tong
                          FROM      khaosat
                          WHERE     CONVERT(DATETIME, ngaylap, 103) BETWEEN 'Sep 1 2011'
                                                              AND
                                                              'Sep 5 2011'
                          GROUP BY  maxa
                        ) AS dkcd ON dkcd.maxa = a.maxa
WHERE   a.maxa <> '99'
        AND LEFT(a.maxa, 2) = b.mahuyen
ORDER BY maxa;
Run Code Online (Sandbox Code Playgroud)

当我执行此查询时,错误结果为: 无法绑定多部分标识符"a.maxa".为什么?
P/s:如果我将查询分成2个单独的查询,它运行正常.

SELECT DISTINCT
        a.maxa ,
        b.mahuyen ,
        a.tenxa ,
        b.tenhuyen …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2005

186
推荐指数
6
解决办法
73万
查看次数

SQL Server架构有什么用?

我不是初学者使用SQL数据库,特别是SQL Server.但是,我主要是一个SQL 2000的人,我一直对2005年以上的模式感到困惑.是的,我知道架构的基本定义,但它们在典型的SQL Server部署中实际使用了什么?

我一直只使用默认架构.为什么我要创建专门的模式?为什么要分配任何内置模式?

编辑:澄清一下,我想我正在寻找架构的好处.如果您只是将其用作安全方案,那么数据库角色似乎已经填满了......呃..嗯..角色.使用它作为命名空间说明符似乎是你可以用所有权完成的事情(dbo与用户等等).

我想我所得到的是,Schemas做了什么,你不能对业主和角色做什么?他们的特殊利益是什么?

theory schema sql-server-2005

183
推荐指数
9
解决办法
11万
查看次数

如何在SQL Server 2005中的一个语句中更新两个表?

我想一次更新两个表.我如何在SQL Server 2005中这样做?

UPDATE 
  Table1, 
  Table2
SET 
  Table1.LastName='DR. XXXXXX', 
  Table2.WAprrs='start,stop'
FROM 
  Table1 T1, 
  Table2 T2
WHERE 
  T1.id = T2.id
AND 
  T1.id = '010008'
Run Code Online (Sandbox Code Playgroud)

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

183
推荐指数
6
解决办法
47万
查看次数

sql查询返回两个表之间的差异

我试图比较两个表,SQL Server,以验证一些数据.我想从两个表中返回所有行,其中数据在一个或另一个中.从本质上讲,我想表明所有的差异.我需要检查三个数据,FirstName,LastName和Product.

我对SQL很新,似乎很多我发现的解决方案都让事情变得复杂.我不必担心NULL.

我开始尝试这样的事情:

SELECT DISTINCT [First Name], [Last Name], [Product Name] FROM [Temp Test Data]
WHERE ([First Name] NOT IN (SELECT [First Name] 
FROM [Real Data]))
Run Code Online (Sandbox Code Playgroud)

我在进一步考虑这个问题时遇到了麻烦.

谢谢!

编辑:

根据@treaschf的回答,我一直在尝试使用以下查询的变体:

SELECT td.[First Name], td.[Last Name], td.[Product Name]
FROM [Temp Test Data] td FULL OUTER JOIN [Data] AS d 
ON td.[First Name] = d.[First Name] AND td.[Last Name] = d.[Last Name] 
WHERE (d.[First Name] = NULL) AND (d.[Last Name] = NULL)
Run Code Online (Sandbox Code Playgroud)

但是当我知道td中至少有一行不在d中时,我一直得到0结果.

编辑:

好吧,我想我弄明白了.至少在我测试的几分钟内它似乎工作得很好.

SELECT [First Name], [Last Name]
FROM …
Run Code Online (Sandbox Code Playgroud)

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

183
推荐指数
6
解决办法
55万
查看次数

SQL Server - 事务回滚错误?

我们有一个客户端应用程序在SQL Server 2005上运行一些SQL,如下所示:

BEGIN TRAN;
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
COMMIT TRAN;
Run Code Online (Sandbox Code Playgroud)

它由一个长字符串命令发送.

如果其中一个插入失败,或者命令的任何部分失败,SQL Server是否会回滚事务?如果它没有回滚,我是否必须发送第二个命令才能回滚?

我可以给出关于我正在使用的api和语言的细节,但我认为SQL Server应该对任何语言做出相同的响应.

sql sql-server transactions sql-server-2005

181
推荐指数
5
解决办法
18万
查看次数

SQL Server查询以查找数据库中所有用户的所有权限/访问权限

我想在sql 2008上编写一个查询,它将直接或由于角色等报告所有有权访问特定数据库的用户或数据库中的对象(如表,视图和存储过程).报告将用于安全审计目的.不确定是否有人有完全符合我需求的查询,但希望能给我一个良好开端的东西.无论是sql 2008,2005还是2000,我都可以根据需要进行转换.

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

180
推荐指数
12
解决办法
65万
查看次数

nvarchar(max)vs NText

在SQL Server 中使用nvarchar(max)vs. NText数据类型有哪些优缺点?我不需要向后兼容性,因此nvarchar(max)在较旧的SQL Server版本中不支持它.

编辑:很显然的问题也适用于TEXTIMAGE对比varchar(max),并varbinary(max)为那些寻找那些数据类型之后.

sql-server text nvarchar sql-server-2005 sql-server-2008

178
推荐指数
5
解决办法
13万
查看次数

如何检查SQL Server文本列是否为空?

我正在使用SQL Server 2005.我有一个带有文本列的表,我在表中有很多行,此列的值不为null,但它是空的.试图与''进行比较产生这种反应:

数据类型text和varchar在不等于运算符时不兼容.

是否有一个特殊函数来确定文本列的值是否为空但是为空?

sql-server sql-server-2005 emptydatatext sqldatatypes notnull

176
推荐指数
4
解决办法
37万
查看次数

Sql Server字符串到日期转换

我想转换像这样的字符串:

'10/15/2008 10:06:32 PM'
Run Code Online (Sandbox Code Playgroud)

进入Sql Server中的等效DATETIME值.

在Oracle中,我会说:

TO_DATE('10/15/2008 10:06:32 PM','MM/DD/YYYY HH:MI:SS AM')
Run Code Online (Sandbox Code Playgroud)

这个问题暗示我必须将字符串解析为其中一种标准格式,然后使用其中一种代码进行转换.对于如此平凡的行动来说,这似乎是荒谬的.有没有更简单的方法?

t-sql sql-server datetime sql-server-2005 string-to-datetime

176
推荐指数
8
解决办法
88万
查看次数

在SQL Server中执行嵌套case语句逻辑的最佳方法

我正在编写一个SQL查询,其中返回的一些列需要根据很多条件进行计算.

我目前正在使用嵌套的case语句,但它变得凌乱.是否有更好的(更有组织和/或可读)的方式?

(我使用的是Microsoft SQL Server,2005)


一个简化的例子:

SELECT
    col1,
    col2,
    col3,
    CASE
        WHEN condition 
        THEN
            CASE
                WHEN condition1 
                THEN
                    CASE 
                        WHEN condition2
                        THEN calculation1
                        ELSE calculation2
                    END
                ELSE
                    CASE 
                        WHEN condition2
                        THEN calculation3
                        ELSE calculation4
                    END
            END
        ELSE 
            CASE 
                WHEN condition1 
                THEN 
                    CASE
                        WHEN condition2 
                        THEN calculation5
                        ELSE calculation6
                    END
                ELSE
                    CASE
                        WHEN condition2 
                        THEN calculation7
                        ELSE calculation8
                    END
            END            
    END AS 'calculatedcol1',
    col4,
    col5 -- etc
FROM table
Run Code Online (Sandbox Code Playgroud)

sql sql-server select nested sql-server-2005

170
推荐指数
7
解决办法
63万
查看次数