标签: sql-server

将两个现有列中的值添加到新列中以获得总计

我们的数据库中有两个名为“ClientIncome”和“PartnerIncome”的现有列。我们想添加一个名为“HouseholdIncome”的新列

我们想将“ClientIncome”和“PartnerIncome”中的值添加到新的“HouseholdIncome”列中?

这是我们数据库的一个小例子。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Incomes](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [ClientIncome] [float] NOT NULL,
    [PartnerIncome] [float] NULL,
    [HouseholdIncome] [float] NULL
) ON [PRIMARY]

GO
SET IDENTITY_INSERT [dbo].[Incomes] ON 

GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (1, 130.77, NULL, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (2, 294.82, 339.28, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (3, 0, NULL, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

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

出于安全原因,选择 SQL Server 侦听哪个 TCP 端口?

我知道 MS SQL Server 的默认 TCP 端口是 1433,出于某些安全原因最好更改它。但是我想知道SQL Server选择哪个端口而不是1433更好,才能正常工作,不干扰其他程序的工作?如果我选择一个已经被其他程序使用的端口怎么办?

谢谢你的时间!

sql-server network tcpip

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

对使用连接或子查询 SQL 感到困惑?

表格1

Id Name  DemoID
1  a      33
2  b      44
3  c      33
4  d      33
5  e      44
Run Code Online (Sandbox Code Playgroud)

表2

Id DemoID IsTrue
11  33     1  
12  44     1
Run Code Online (Sandbox Code Playgroud)

现在我们可以使用以下 2 个使用连接和使用子查询的查询来找到表 2 中存在哪个 DemoID,但是对于更多的记录,哪个更准确/更相关?

使用加入 -

SELECT Table1.Id FROM Table1  Table1 join Table2 Table2 on Table1.DemoID  = Table2.DemoID 
WHERE Table2.IsTrue = 1
Run Code Online (Sandbox Code Playgroud)

使用子查询 -

SELECT Table1.Id  FROM Table1  Table1
WHERE Table1.DemoID  in (select Table2.DemoID from Table2 Table2)
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

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

Read Commited 标准行为中是否存在重复项?

这是指这个问题:Duplicate records returned from table with no duplicates

“读提交”隔离级别假定一个事务可以以不同的方式读取同一条记录,但并不明确暗示记录可以重复。我同意同一事务中的两个语句可以返回不同的数据集,但返回带有重复记录的相同数据集听起来很疯狂。

据我所知,只有 MS SQL Server 有这种行为。

如果它符合ANSI SQL 标准定义的“Read Committed”隔离级别,请证明或反驳。

sql-server isolation-level sql-standard

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

INSERT 语句错误消息引用列我没有包含在查询中

我正在使用 MSSQL 2008。

我的 INSERT 语句如下:

INSERT INTO [DB1].[dbo].[SpotArtSong](ID)
SELECT  SNG.S_ID
FROM [DB1].[dbo].[SpotArtSong] SPOT
INNER JOIN [DB2].[dbo].[nt-art] ART 
ON ART.Artist_Name LIKE SPOT.[Artist]+'%'
INNER JOIN [DB2].[dbo].[nt-sng] SNG 
ON ART.Artist_ID  = SNG.Artist_ID
AND left(SNG.SONG_TITLE,10) = left(SPOT.[Song],10)
WHERE spot.BDSID is NULL
Run Code Online (Sandbox Code Playgroud)

[DB1].[dbo].[SpotArtSong] 上的 [ID] 列有一些我试图替换的空值。我找到了替换项,在查看完整的列结果时,我对从 SNG.S_ID 返回的搜索结果感到满意。我正在尝试将该一列插入到 [DB1].[dbo].[SpotArtSong] 上的一列中。

本质上,我将一些数据报废到 [DB1].[dbo].[SpotArtSong] 中,并将其与 [DB2].[dbo].[nt-art] (ART) 和 [DB2] 之间的一些现有生产数据进行匹配.[dbo].[nt-sng] (SNG)。我知道 ART 和 SNG 中的数据是正确的,我正在将其与 SPOT 中报废的数据相关联

失败声明说:

Cannot insert the value NULL into column 'Artist', table 
'DB1.dbo.SpotArtSong'; column does not allow nulls. INSERT 
fails.
The …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

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

RAM 中的逻辑读取是否出现在等待统计信息中或在哪里?

关于 SQLOS 的执行模型(RUNNING 状态、RUNNABLE 队列、WAITER 列表),当当前正在进行 RAM 中页面的逻辑读取时,任务的状态是什么?

如果是 WAITER 列表,最流行的等待类型是什么?

我可以以某种方式测量此类操作所需的时间吗?

我知道很多逻辑读取会减慢您的查询速度,很多表/索引扫描(已经位于缓冲池中)会减慢您的查询速度 - 我只想知道它们如何出现在统计信息/dmv 中或如何将其与其他数据区分开来“经典”等待类型。

performance sql-server waits performance-tuning

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

19 位数字的最佳最小数据类型大小是多少?

我正在使用此代码来混合日期和时间以将其用作唯一 ID

DateTime.Now.ToString("yyyyMMddHHmmssfffff")
Run Code Online (Sandbox Code Playgroud)

在 SQL Server 2017 中,我很困惑我可以使用哪种数据类型的最佳最小大小来存储此字符串。

最好的最小数据类型是什么:bigint,timestamp或varchar(19)?

sql-server datatypes timestamp sql-server-2017

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

使用压缩索引的 Ola Hallengren 索引维护

如果将 Ola Hallengren 索引维护解决方案安装到已对多个索引应用了压缩的服务器上,脚本在重建相应索引时是否会遵守当前的压缩级别?

sql-server ola-hallengren index-maintenance

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

为列值创建条件规则

我目前正在 SQL Server 中处理下表

Table: order_status_logs
    log_id      INT NOT NULL IDENTITY(1,1)
    order_id    INT NOT NULL
    status_id   INT NOT NULL
    log_date    DATE NOT NULL
    expected_by DATE NULL
Run Code Online (Sandbox Code Playgroud)

在此status_id列的表中,可能有以下值:

[1] - Pending
[2] - Ordered
[3] - Backordered
[4] - Received
Run Code Online (Sandbox Code Playgroud)

我想设置我的表,以便在尝试创建新记录时,如果不等于 4 ,expected_by则从NULL到 。基本上除非已收到订单,否则该表将始终需要该列的数据。NOT NULLstatus_idexpected_by

可以用 a 来做到这一点CONSTRAINT吗?或者这是我需要通过返回错误消息的程序或如果我不提供该列数据的内容来执行的操作?

sql-server constraint

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

在 WHERE 子句中更改运算符时,简单的递归 CTE 会爆炸

正如标题所述,我有一个递归 CTE,当我更改 WHERE 子句中的运算符时,即使只有两行数据,它也会爆炸。

CREATE TABLE #Recursion
(Parent varchar(10), Child varchar(10), TopDate datetime)


INSERT INTO #Recursion (Parent, Child, TopDate)
VALUES
('00003137', '00003137', '2018-08-31'),
('04536347', '00003137', '2017-02-28'),
('05458040', '05458040', '9999-12-31'),
('00269705',' 05458040',' 9999-12-31')

;WITH 
Parent AS
  ( SELECT parent
     , child
     , 1 as sort
     , TopDate
 FROM #Recursion 
WHERE parent = child
 UNION ALL
   SELECT s.parent
        , d.child
        , d.sort + 1
        , s.TopDate
 FROM Parent as d
 JOIN #Recursion s
   ON s.child= d.parent
WHERE s.TopDate < d.TopDate
)

  SELECT …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2012

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