有没有简单的方法来获取从 SQL 语句返回的列名?
如:
SELECT *
FROM ATable
FULL OUTER JOIN BTable b ON a.SOME_KEY = b.SOME_KEY
FULL OUTER JOIN CTable c ON b.SOME_ID = c.SOME_ID
FULL OUTER JOIN DTable d ON a.SOME_OTHER_ID = d.SOME_OTHER_ID
WHERE a.SOME_KEY = @key AND c.SOME_SERIAL_NR = @serialnumber
Run Code Online (Sandbox Code Playgroud)
我似乎无法得到
select column_name
from information_schema.columns
where table_name = 'table'
Run Code Online (Sandbox Code Playgroud)
在我当前的环境中工作
我有一个关于连接两个表的问题。
CREATE TABLE [dbo].[DCString] (
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[DCDistributionBoxID] [bigint] NOT NULL,
[CurrentMPP] [decimal](18, 2) NULL,
CONSTRAINT [PrimaryKey3] PRIMARY KEY CLUSTERED ( [ID] ASC )
)
ALTER TABLE [dbo].[DCString]
ADD CONSTRAINT [FK_DCString_DCDistributionBox] FOREIGN KEY([DCDistributionBoxID])
REFERENCES [dbo].[DCDistributionBox] ([ID])
CREATE TABLE [dbo].[StringData](
[DCStringID] [bigint] NOT NULL,
[TimeStamp] [datetime] NOT NULL,
[DCCurrent] [decimal](18, 2) NULL,
CONSTRAINT [PrimaryKey4] PRIMARY KEY CLUSTERED ( [TimeStamp] DESC, [DCStringID] ASC)
)
Run Code Online (Sandbox Code Playgroud)
该[StringData]表具有以下存储统计信息:
我现在想将[StringData]表中的数据与表中的数据连接起来[DCString]。 …
我来自 Oracle 背景,遇到了创建 SQL Server 视图的代码,这是我以前从未见过的。
我们有一个名为 viewA 的视图(例如)
在生成视图的脚本中,我看到了这段代码
select columnA, columnB, columnC
from tableA as vw_tableB
Run Code Online (Sandbox Code Playgroud)
我的问题是,视图到底叫什么?
是viewA还是vw_tableB。
我的另一个问题是这背后的基本原理是什么?
我有一个查询,我想在其中检索不同的Child行,但按Parent. 如果我执行以下操作,则会收到错误消息,因为 中指定的列ORDER BY未包含在DISTINCT列表中:
SELECT
DISTINCT c.foo, c.bar
FROM Parent p
JOIN Child c on c.parentId = p.id
ORDER BY p.createdDate
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加p.createdDate到选择列表中,我将失去Child行的独特性,因为p.createdDate它们都不同。
如果我使用 CTE 或子查询首先进行排序,然后从中选择不同的行,则外部查询不保证它将保持内部/cte 查询的顺序。
有没有办法实现这一目标?
我在整个互联网上搜索堆栈溢出,但我找到的每个示例都只有一行,或者根本不起作用。
我有这张桌子:
TBL_RELATORIOS_TAMANHOS
table_catalog
table_name
column_name
data_type
character_maximum_length
numeric_precision
numeric_scale
Run Code Online (Sandbox Code Playgroud)
在它里面我有所有表中的所有列。我只需要找到那些具有不同精度、大小等的列。
使用 row_number 我得到了这个:
;WITH CTE AS
(
SELECT DISTINCT table_name 'Tabela',
column_name 'Coluna',
character_maximum_length as 'Tamanho',
numeric_precision as 'Precisao_Numerica',
numeric_scale 'Escala_Numerica'
FROM TBL_RELATORIO_TAMANHOS
)
SELECT *,
ROW_NUMBER() over ( partition by Tabela,Coluna order by Tabela,Coluna)
FROM CTE
ORDER BY 1,2
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以看到上面有一个的列2,所以这个是重复的(相同的列,不同的大小,精度等)。
| table_Name | Column_name | character_maximum_length | numeric_precision | numeric_scale | Row_number |
|-------------------------|------------------|--------------------------|-------------------|---------------|------------|
| ACOES | ID_BMF | 20 | NULL | NULL | 1 …Run Code Online (Sandbox Code Playgroud) 我有一个 After Update 触发器,其中触发器在同一个表中插入一个值以查找持续时间列。我的目标是每当插入 end_time 值时,触发器将找到hh:mm:ss格式的持续时间并插入到持续时间列中。
问题-触发器导致如此多的死锁,从而阻塞了另一个进程。
列数据类型信息..
Start_time datetime, End_time datetime, Duration time(3)
ALTER TRIGGER [dbo].[GET_DURATION] ON [dbo].[INBOUND_CALL_xxx]
AFTER UPDATE AS
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
Begin Transaction
UPDATE INBOUND_CALL_xxx
SET DURATION = convert(time(0),(END_TIME- START_TIME))
FROM INBOUND_CALL_xxx with (nolock)
Commit;
Run Code Online (Sandbox Code Playgroud) performance sql-server-2008 sql-server sql-server-2012 performance-tuning
我在 SQL Server 上有 134 个独立的数据库。
每 15 分钟msdb.dbo.backupset,服务器上的每个数据库的表中都会出现一个条目。
我有一个包含 3 个表的 SQL Server 数据库。我需要恢复包含4 个表的备份,同时仍保留原始 3 个表中的旧数据。这可能吗?
执行下面的查询时,如果我使用PRINT它打印正确。我可以复制并粘贴打印的代码并执行它。但是,如果我使用 EXEC,则会出现以下错误:
有没有办法简化我正在做的事情?为什么 SQLPRINT和 SQL 会EXEC提供这两种截然不同的结果集?
DECLARE @TableName as NVARCHAR(250), @SQL as VARCHAR(MAX);
DECLARE @TableCursor as CURSOR;
SET @TableCursor = CURSOR FOR
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
AND name like 'HISTORY_MasterList_%'
ORDER BY sobjects.name
OPEN @TableCursor;
FETCH NEXT FROM @TableCursor INTO @TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL ='select '''+ @TableName +''', 0
Union All
select All ''Server Count'',count(1) from ['+ @TableName +']
Union All
select All ''Server Cores'',sum(convert(decimal(18,0),cores)) …Run Code Online (Sandbox Code Playgroud) sql-server-2008 sql-server t-sql sql-server-2008-r2 sql-server-2012
我有一个 .net 应用程序。它试图创建表、视图并将数据插入/更新到许多表中。应用程序运行时出现错误。
我尝试在 SQL Profiler 中跟踪查询,但没有发现任何错误。有什么方法可以跟踪错误语句,或者我需要在探查器中添加任何其他事件。
我已经尝试过以下事件(例外):
sql-server-2008 ×10
sql-server ×9
t-sql ×2
backup ×1
distinct ×1
join ×1
msdb ×1
order-by ×1
performance ×1
profiler ×1
restore ×1
view ×1