标签: sql-server-2008-r2

如何显示结果查询列而不是逐行?

我有三张桌子:

Flight table
 FlightId  int
 FlightNumber varchar(10)

FlightCapacity table
ID int
FlightIdRef int
ClassIdRef  int
Capacity    int

Class Table
ClassId  int
Name      varchar(10)

Class Table:
ClassId     Name
   1         Y
   2         A

Flight Table
FlightId   Number
1           123
2           423

FlightCapacity Table
Id   FlightIdRef    ClassIdref  Capacity
1       1              1          10
2       1              2          20
3       2              2          10
Run Code Online (Sandbox Code Playgroud)

这是一个简单的查询:

select Flight.FlightNumber,Class.Name+RTRIM(FlightCapacity.Capacity)
   from  Flight
      inner join FlightCapacity
           on Flight.FlightId=FlightCapacity.FlightIdRef
               inner join Class
                    on FlightCapacity.ClassIdRef=Class.ClassId
Run Code Online (Sandbox Code Playgroud)

但我希望得到以下结果:(我想在一行中显示每个航班和容量的所有类别)

FlightNumber     ClassNameAndCapacity
  123                 Y10  A20
  423                 Y10
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008 sql-server-2008-r2

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

如何从给定字符获取子串?

我有以这种形式登录的表:

login1  
domain1\login2  
otherDomain\login3

数据始终采用以下形式:
DOMAIN\login

login

我需要在表单中检索没有前缀的用户登录(将所有内容保留在'\'的右侧):

login1  
login2  
login3

如何在SQL Server中执行此操作?

sql sql-server sql-server-2008-r2

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

如何在Sql server中找到我可以访问的数据库?

我想编写一个查询,它将为服务器上的所有数据库提供对用户的可访问性(读取或访问更多).

谢谢,Omkar.

sql sql-server sql-server-2008 sql-server-2008-r2

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

sql - 根据多个值从组中选择行

我有一张桌子:

| ID    | Val |
+-------+-----+
| abc-1 |  10 |
| abc-2 |  30 |
| cde-1 |  10 |
| cde-2 |  10 |
| efg-1 |  20 |
| efg-2 |  11 |
Run Code Online (Sandbox Code Playgroud)

并希望得到基于子串(ID,1,3)最小值的结果,并且如果Val有重复,则ist必须是第一个

| ID    | Val |
+-------+-----+
| abc-1 |  10 |
| cde-1 |  10 |
| efg-2 |  11 |
Run Code Online (Sandbox Code Playgroud)

问题是我卡住了,因为我不能使用group by substring(id,1,3),ID,因为它将再次有2行(每个用于abc-1和abc-2)

sql sql-server-2008-r2

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

SQL Where子句将列表传递给列

我有一些表DOCUMENTS有一个列TYPE_ID和一个名为TYPES Now 的表我希望进行一个查询过滤我的DOCUMENTS所有文档,其中包含一个列表TYPE_ID,可以是单个元素或一类元素

正常查询是:

Select * From DOCUMENTS Where TYPE_ID = myValue
Run Code Online (Sandbox Code Playgroud)

但是当它可以是wuery看起来像已知元素的列表时

Select * From DOCUMENTS Where TYPE_ID = myValue1 or TYPE_ID = myValue2 or TYPE_ID = myValue3
Run Code Online (Sandbox Code Playgroud)

但是如果你有n个元素......这个查询怎么办呢?

sql-server sql-server-2008 sql-server-2008-r2

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

批量以YYYYMM格式将日期插入MS SQL表中的日期字段

我有一个大文本文件(超过3亿条记录).有一个字段包含YYYYMM格式的日期.目标字段是日期类型,我正在使用MS SQL 2008 R2服务器.由于数据量巨大,我更喜欢使用批量插入.这是我已经做过的事情:

bulk insert Tabela_5
from 'c:\users\...\table5.csv'
with
(
    rowterminator = '\n',
    fieldterminator = ',',
    tablock
)
select * from Tabela_5
Run Code Online (Sandbox Code Playgroud)

201206在文件中原来是2020-12-06在服务器上,而我希望它2012-06-01(我不关心这一天).有没有办法将这种格式的日期批量插入日期类型的字段?

亲切的问候maciej pitucha

t-sql sql-server bulk sql-server-2008-r2 date-formatting

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

SQL Server 2008.难以设置日期和时间"timestamp"

我正在使用MS SQL Server 2008 R2,我需要在每一行中都有一个单元格,其中包含在数据库中插入行的日期和时间.现在,因为我想编写脚本,然后在MS SQL Server 2005中加载数据库我不能使用日期时间或日期,所以我尝试在计算列规范属性中使用getdate()函数.谁能帮帮我吗.

谢谢

datetime timestamp sql-server-2005 sql-server-2008-r2

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

当调用用户没有ALTER TABLE时,从存储过程调用UPDATE STATISTICS

我有一个应用程序,允许用户上传大型数据文件,然后解析并将数据存储在SQL Server 2008 R2数据库中.

我想在导入数据的表上自动运行UPDATE STATISTICS,因为用户可以运行数据报告并且数据量非常大.

数据访问是通过存储过程完成的,用户对表没有权限,只对存储过程执行.

我编写了一个存储过程来获取一个表名,并使用sp_Executesql对传入的表名运行UPDATE STATISTICS.存储过程和表都归dbo所有.我收到一条错误,上面写着"无法找到对象"表"因为它不存在或您没有权限." 如果我在桌面上向用户授予alter,那么它可以正常工作,但我想避免这样做.我认为如果表和存储过程由同一所有者拥有,则忽略用户的权限.

没有alter table权限,是否可以以某种方式运行UPDATE STATISTICS?

sql-server stored-procedures sql-server-2008-r2

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

DateKey YYYYMMDD应该是char(8)吗?

我们仓库中无处不在的两个最重要的字段是UserAccountKey和DateKey.

  • DateKey是(int,not null)
  • UserAccountKey是(int,not null)

这些是正确的数据类型吗?

WH是在2006年创建的,所以类型Date不是一个选项,虽然我们现在正在运行,2008-R2所以它现在是WH的下一次迭代的选项.这是一个完善的WH,它有多个立方体和一个完整的报告系统.上面的另外一个问题是,在创建WH时,架构师是否更好地将DateKey作为类型Char(8)而不是INT

sql data-warehouse sql-server-2008-r2

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

如何强制插入触发器在插入之后执行,执行任何其他插入之前?

此问题与并发高速插入有关.我必须承认,在我眼中这是非常有趣的.

我正在使用SQL Server 2008 R2执行T-SQL插入和插入触发器之后.

我想确保在插入和插入后触发器之间不会执行任何命令.

使用隔离级别导致死锁或只是不解决问题.

我正在使用的程序是从Phil到SQL Server依赖身份的答案/解决方案 - 有这样的事情吗?

问题是:

有时插入介于前一个插入和插入后触发之间,导致此结果:

RoomID  ItemID  ItemDescription ID
------  ------  --------------- --
7       1       Door             1
7       2       Window (West)    2
7       3       Window (North)   3
8       1       Door             4
8       2       Table #1         5
8       3       Table #2         6
7       4       Table #1         7
8       4       Chair #1         8
7       6       Table #2         9
7       5       Table #3        10
8       5       Chair #2        11
Run Code Online (Sandbox Code Playgroud)

参见ID#9和#10.Thair ItemID被切换.ItemID应分别为5和6而不是6和5,但第10次插入可能发生在#9完成执行的后插入触发器之前. …

sql t-sql sql-server sql-server-2008 sql-server-2008-r2

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