标签: sql-server-2000

当文本字段是MS SQL Server 2000中返回字段的一部分时,如何选择不同的行?

我有一个数据库驱动的常见问题解答,它被组织成各个部分,我试图只获得那些与他们有问题/答案的部分的部分数据.

这是架构:

|---------------------|      |----------------------|
|       Section       |      |       Quest-Ans      |
|---------------------|      |----------------------|
| PK | id(int)        |<--|  | PK     | id(int)     |
|    | title(varchar) |   |--| FK     | Sec_id(int) |
|    | desc(text)     |      |        | body(text)  |
|---------------------|      |----------------------|
Run Code Online (Sandbox Code Playgroud)

当我尝试这个查询时:

SELECT DISTINCT s.id, s.title, s.desc
FROM Section as s INNER JOIN Quest-Ans as q ON s.id = q.Sec_id 
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,说DISCRETE无法应用于文本字段.我怎样才能获得我想要的数据?

如果重要,这是一个SQL2000数据库.

编辑:


好的,所以似乎有两种方法可以解决这个问题.使用EXISTS和where子句中的子查询,或者使用内部联接中的子查询.哪个更快?

sql sql-server sql-server-2000

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

如何以其本机格式获取SQL Server Date?

我需要从SQL Server数据库(SQL Server 2000)获取日期,日期存储如下:

2009-09-30 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

我想将此日期传递给Classic ASP函数,以便在其他地方的数据库中使用此日期,但是当我得到日期时,它会将我的ASP代码转换为依赖于语言环境的版本,例如:

30/09/2009
Run Code Online (Sandbox Code Playgroud)

我只是希望日期原样格式化日期,所以它再次正确似乎是不必要的,虽然如果这是唯一的方法那么好 - 是否有任何方式将其视为字符串数据所以它保持这样,所以它可以插入以相同的日期返回数据库,无需转换?

sql sql-server date sql-server-2000 asp-classic

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

在sql server 2000中确定触发器中的sql命令类型

是否有更多推荐的方法来确定触发器中的命令类型然后测试DELETED和INSERTED表?

目前我的方法是:

(EXISTS (select 1 from INSERTED) AND NOT EXISTS (select 1 from DELETED)) = INSERT
(EXISTS (select 1 from INSERTED) AND EXISTS (select 1 from DELETED)) = UPDATE
(NOT EXISTS (select 1 from INSERTED) AND EXISTS (select 1 from DELETED)) = DELETE
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server triggers sql-server-2000

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

如何在SQL 2000中删除重复行?

我以为我弄明白了,但事实证明我只是删除了第一张唱片.以下内容返回重复的行.所有都有2.我只想删除每个重复记录的第一个.

select scorestudentid, scoreadvisor, scorecorrect, count(*) 
from scores
where scoretestid = 3284
group by scorestudentid, scoreadvisor, scorecorrect
having count(scorestudentid) > 1
Run Code Online (Sandbox Code Playgroud)

哪个回报:

scorestudentid  scoreadvisor  scorecorrect  no column name
13033719        28059     3.0           2
13033777        28086     3.0           2
13033826        28147     3.0           2
13033960        28023     3.0           2
Run Code Online (Sandbox Code Playgroud)

所以我把它放在一起认为它会起作用:

set rowcount 1
delete
from scores
where scoretestid = 3284 
and scorestudentid in (
    select scorestudentid
    from scores
    where scoretestid = 3284
    group by scorestudentid
    having count(scorestudentid) > 1)
Run Code Online (Sandbox Code Playgroud)

它看起来应该是一个简单的概念,但我没有得到它.

基于托马斯脚本我更新了查询以适应但它仍然无法正常工作.

Delete Scores
Where Exists …
Run Code Online (Sandbox Code Playgroud)

sql sql-server-2000

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

这个SQL查询是什么意思?

我有以下SQL查询:

select AuditStatusId 
from dbo.ABC_AuditStatus 
where coalesce(AuditFrequency, 0) <> 0
Run Code Online (Sandbox Code Playgroud)

我正在努力理解它.它看起来很简单,我知道coalesce运算符的作用(或多或少),但似乎没有得到意义.

除了上面的查询之外,如果不知道任何其他信息,您认为这意味着什么?

sql t-sql sql-server sql-server-2000 coalesce

1
推荐指数
2
解决办法
1136
查看次数

从coldfusion中查询SQL Server 2000

我正在尝试执行以下CFML:

<cfquery name="koppelData" datasource="#request.DataSource#">

   INSERT INTO t_user_profile
     (Username, ProfileID, AanvraagID)
   VALUES
     (<cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.username#">,
      <cfqueryparam cfsqltype="cf_sql_integer"  value="#laatste#">),
      <cfqueryparam value="#FORM.vragenlijst#" cfsqltype="cf_sql_integer" >)
</cfquery>
Run Code Online (Sandbox Code Playgroud)

这会引发以下错误(我的SQL服务器版本是荷兰语):

[Macromedia] [SQLServer JDBC驱动程序] [SQLServer] de VALERT-instructie bevat meer kolommen dan er waarden zijn opgegeven in de VALUES-component.Het aantal waarden in de VALUES-component moet overeenkomen在de INSERT-instructie遇到了het aantal kolommen.

这基本上翻译如下:INSERT指令包含更多列,因为VALUES语句中指定了值.VALUES语句中的字段数必须等于INSERT语句中的字段数.

我做错了什么?

编辑:

单引号没有帮助,如:

Error Executing Database Query.

[Macromedia][SQLServer JDBC Driver]Invalid parameter binding(s).

The error occurred in C:\Users\Adm1n\Adobe ColdFusion Builder workspace\PASS\jsexec\maak_lid.cfm: line 52
50 :                                '<cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.username#">',
51 : …
Run Code Online (Sandbox Code Playgroud)

coldfusion sql-server-2000 coldfusion-9

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

表连接包括没有条目的行 - SUM()

我在将两个表连接在一起时遇到一些困难,涉及一个SUM,它不包含在第二个表中.

即我有两张桌子:

tblClient

 ID|FirstName|LastName
 1 |Billy    |Blogs
 2 |Bobby    |Biggs
 3 |Hill     |Bill
 4 |Super    |Man
Run Code Online (Sandbox Code Playgroud)

tblComplete

 PurchaseID|ID|Amount
 123123    |1 |26.00
 43254     |2 |22.00
 546275    |3 |15.00
 463565    |3 |15.00
 343252    |1 |56.00
Run Code Online (Sandbox Code Playgroud)

我想要做的是将这两个表连接在一起,以便得到以下输出:

 ID|FirstName|LastName| SUM(Amount)
 1 |Billy    |Blogs   | 82.00
 2 |Bobby    |Biggs   | 22.00
 3 |Hill     |Bill    | 30.00
 4 |Super    |Man     | 0
Run Code Online (Sandbox Code Playgroud)

我希望Super Man被包含在输出中,总和为零,因为他没有购买任何东西.我该怎么做呢?

编辑:tblComplete表中的主键.

sql t-sql sql-server sql-server-2000 aggregate-functions

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

从sql server 2000中的select中删除?

我想删除此select查询返回的任何内容:

SELECT  u.*
FROM    (
        SELECT  userName, groupId, MAX(userId) AS maxId
        FROM    userTable
    where userName <> '' and userName is not null
        GROUP BY
                userName, groupId
        HAVING  COUNT(*) > 1
        ) q
JOIN    userTable u
ON      u.userName = q.userName
        AND u.groupId= q.groupId
        AND u.userId <> q.maxId)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

sql select sql-server-2000 sql-delete

1
推荐指数
2
解决办法
3322
查看次数

SQL查询将两列合并为一列

对不起来的标题很抱歉.

我有一个SQL查询

SELECT SaleDate, Location, SUM(DollarSales)
FROM [TableName]
WHERE (SaleDate= '2012-11-19' OR SaleDate= '2012-11-12')
GROUP BY SaleDate, Location
ORDER BY Location, SaleDate
Run Code Online (Sandbox Code Playgroud)

我得到如下结果

SaleDate                    Location    (No column name)
2012-11-12 00:00:00.000     002         21500.38
2012-11-19 00:00:00.000     002         24166.81
2012-11-12 00:00:00.000     016         14723.26
2012-11-19 00:00:00.000     016         12801.00
Run Code Online (Sandbox Code Playgroud)

我希望结果看起来像

Location    (Sale on 11/12)    (Sale on 11/19)
002         21500.38           24166.81
016         14723.26           12801.00
Run Code Online (Sandbox Code Playgroud)

我不想使用内部选择.有什么方法可以做到这一点.这是我们使用SQL Server 2000的遗留系统之一.先谢谢你.

sql sql-server sql-server-2000

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

将多个文本字段组合到一个文本字段中

我正在尝试将多个文本列合并为一个连接的文本列.每个字段以前都用于各种描述,但根据新的要求,我需要将所有这些字段合并为一个.

我尝试先将它们转换为varchar(max)然后连接,但有些行在这些列中的值比最大值长,并且在结果中被截断.

有没有办法在SQL Server 2000中组合多个文本字段?

sql-server sql-server-2000

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