我在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;
当我执行此查询时,错误结果为:
 无法绑定多部分标识符"a.maxa".为什么?
P/s:如果我将查询分成2个单独的查询,它运行正常.
SELECT DISTINCT
        a.maxa ,
        b.mahuyen ,
        a.tenxa ,
        b.tenhuyen …我不是初学者使用SQL数据库,特别是SQL Server.但是,我主要是一个SQL 2000的人,我一直对2005年以上的模式感到困惑.是的,我知道架构的基本定义,但它们在典型的SQL Server部署中实际使用了什么?
我一直只使用默认架构.为什么我要创建专门的模式?为什么要分配任何内置模式?
编辑:澄清一下,我想我正在寻找架构的好处.如果您只是将其用作安全方案,那么数据库角色似乎已经填满了......呃..嗯..角色.使用它作为命名空间说明符似乎是你可以用所有权完成的事情(dbo与用户等等).
我想我所得到的是,Schemas做了什么,你不能对业主和角色做什么?他们的特殊利益是什么?
我想一次更新两个表.我如何在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'
我试图比较两个表,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]))
我在进一步考虑这个问题时遇到了麻烦.
谢谢!
编辑:
根据@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)
但是当我知道td中至少有一行不在d中时,我一直得到0结果.
编辑:
好吧,我想我弄明白了.至少在我测试的几分钟内它似乎工作得很好.
SELECT [First Name], [Last Name]
FROM …我们有一个客户端应用程序在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;
它由一个长字符串命令发送.
如果其中一个插入失败,或者命令的任何部分失败,SQL Server是否会回滚事务?如果它没有回滚,我是否必须发送第二个命令才能回滚?
我可以给出关于我正在使用的api和语言的细节,但我认为SQL Server应该对任何语言做出相同的响应.
我想在sql 2008上编写一个查询,它将直接或由于角色等报告所有有权访问特定数据库的用户或数据库中的对象(如表,视图和存储过程).报告将用于安全审计目的.不确定是否有人有完全符合我需求的查询,但希望能给我一个良好开端的东西.无论是sql 2008,2005还是2000,我都可以根据需要进行转换.
在SQL Server 中使用nvarchar(max)vs. NText数据类型有哪些优缺点?我不需要向后兼容性,因此nvarchar(max)在较旧的SQL Server版本中不支持它.
编辑:很显然的问题也适用于TEXT和IMAGE对比varchar(max),并varbinary(max)为那些寻找那些数据类型之后.
我正在使用SQL Server 2005.我有一个带有文本列的表,我在表中有很多行,此列的值不为null,但它是空的.试图与''进行比较产生这种反应:
数据类型text和varchar在不等于运算符时不兼容.
是否有一个特殊函数来确定文本列的值是否为空但是为空?
sql-server sql-server-2005 emptydatatext sqldatatypes notnull
我想转换像这样的字符串:
'10/15/2008 10:06:32 PM'
进入Sql Server中的等效DATETIME值.
在Oracle中,我会说:
TO_DATE('10/15/2008 10:06:32 PM','MM/DD/YYYY HH:MI:SS AM')
这个问题暗示我必须将字符串解析为其中一种标准格式,然后使用其中一种代码进行转换.对于如此平凡的行动来说,这似乎是荒谬的.有没有更简单的方法?
t-sql sql-server datetime sql-server-2005 string-to-datetime
我正在编写一个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
sql-server-2005 ×10
sql-server ×9
sql ×5
t-sql ×2
datetime ×1
nested ×1
notnull ×1
nvarchar ×1
schema ×1
select ×1
sqldatatypes ×1
text ×1
theory ×1
transactions ×1