我有一个现有的表,我在其中添加了一个NgoId数据类型为int. 我想NOT NULL在列中添加 as 。
当我添加这个时,我收到以下错误:
无法修改表。无法将值 NULL 插入列“NgoId”、表“CSR.dbo.Tmp_tbl_post_category”;列不允许空值。插入失败。该语句已终止。
请帮助如何添加 NOT NULL 列。
在 SQL Server 2008 上运行此代码段会产生与在 SQL Server 2014 上不同的结果。我需要它们产生相同的结果。
我的场景是我正在编写单元测试(使用 tsqlt),而这段代码是我试图测试的一个巨大过程的一部分。在我的测试代码中,我可以做任何事情,因为该代码永远不会投入生产。这个“错误”在生产中不会造成损害,但在编写测试时给我带来了问题。意思是,我不想更改代码,只想更改测试。
我的本地开发环境是 SQL Server 2014,但我们的一些 CI 环境仍然是 SQL Server 2008。
我目前的技巧是在服务器是 2008 的情况下将表重新设置为 0(而不是 1)。我不喜欢这样,因为当我们的环境升级时我需要更改它或删除它。
IF CHARINDEX('2008', @@VERSION) > 0 BEGIN
-- HACK to fix identity bug in SQL 2008.
DBCC CHECKIDENT('...peter', RESEED, 0);
END
Run Code Online (Sandbox Code Playgroud)
麻烦的代码:
IF OBJECT_ID('tempdb..#peter') IS NOT NULL DROP TABLE #peter;
CREATE TABLE #peter(ID INT IDENTITY(1, 1), VALUE CHAR(10));
SET IDENTITY_INSERT #peter ON;
INSERT INTO …Run Code Online (Sandbox Code Playgroud) 注意到 SQL Server 2016 CTP2 的文档声明“默认情况下,安装程序添加与 CPU 数量或 8 一样多的 tempdb 文件,以较低者为准”。 https://msdn.microsoft.com/en-us/library/bb510411(v=sql.130).aspx
但我一直认为“正确”的比例应该是 CPU 核心数量的一半,对于 8 核心以下的机器来说。
这是否应该被视为微软的官方建议,甚至适用于2012/2014年?
我有一个返回以下数据集的查询:
RELATIONid MAPid D1id D2id D3id
4999 4999 626 1250 7
5000 5000 626 1250 8
Run Code Online (Sandbox Code Playgroud)
对于下一步,我需要将这些数据集绑定到树视图(层次结构)中。我需要将此数据集转换为以下内容:
Nodeid ParentNodeid Header
626 null D1
1250 626 D2
7 1250 D3
8 1250 D3
Run Code Online (Sandbox Code Playgroud)
我如何从原始数据集中实现这些结构?
我还有一个问题要问,数据结构比前一个复杂(一点点)。假设我有这样的示例数据集:
RELATIONid MAPid D1id D2id D3id
4999 4999 626 1250 7
5000 5000 626 1250 8
5001 5001 627 1300 10
5002 5002 627 1300 12
5003 5003 628 1400 15
Run Code Online (Sandbox Code Playgroud)
从以下数据集中,我们有 3 个 MainParent:626, 627, 628并且转换(交叉应用)输出期望将是这样的:
Nodeid ParentNodeid Header
626 null D1
1250 626 …Run Code Online (Sandbox Code Playgroud) 我有这个 SQL
SELECT
price_amount,
price_currency,
CASE
WHEN price_currency='USD' THEN price_amount * 3.9024
WHEN price_currency='EUR' THEN price_amount * 4.413
WHEN price_currency='ILS' THEN price_amount * 1
ELSE price_amount * 1
END AS final_price
FROM items
WHERE final_price BETWEEN 1 AND 100
Run Code Online (Sandbox Code Playgroud)
但我得到:
错误:“final_price”列不存在第
1 行:...ce_amount * 1 END AS final_price FROM items WHERE final_pric...
它使用别名被选中,那么为什么它试图在表中找到它?
我有一个看起来像这样的表:
| column | def |
| ------ | ---- |
| id | uuid |
| status | int |
| data | text |
Run Code Online (Sandbox Code Playgroud)
我想编写一个查询来复制一行(仅更改几列)并返回旧的(替换的)数据:
INSERT INTO tmp (status, data)
SELECT source.status, :data
FROM table AS source
WHERE id = :id
RETURNING id, source.data
Run Code Online (Sandbox Code Playgroud)
但RETURNING只能访问插入行中的值,是否有其他方法可以做到这一点?
我正在学习 SQL,我正在努力找一份工作。我在 MS SQL Server 2014 中有下表:
该表名为 Game,具有以下字段:Name、Stage #、Score。
我的目标是用他/她的名字写出每个阶段的获胜者(阶段的获胜者是获得最高分的人)。
这是原始表:
Name Stage # Score
George A 10
Joe A 10
Pete A 9
Jane B 7
Sally B 6
Run Code Online (Sandbox Code Playgroud)
输出应该如下所示:
Winner Name Score Stage
George 10 A
Joe 10 A
Jane 7 B
Run Code Online (Sandbox Code Playgroud)
我怎样才能完成这个任务?一位同事向我推荐了http://sqlfiddle.com/以帮助我解决这个问题,但该网站显然不适用于 MS SQL Server 2014 或 MS SQL Server 2008。因此,我可以在这里获得一些帮助吗?
我了解一些基本功能,例如 SELECT、WHERE、GROUP BY、JOIN 和 HAVING,但我无法将它们放在一起以获得我想要的正确的三行输出。
我有一个当前看起来像这样的数据库表:
PageField
-Id (Int, PK)
-FieldType (String) Can be Text, Decimal, Integer or Bit
-Value (This stores the value regardless of the FieldType, so it is not strongly typed)
Run Code Online (Sandbox Code Playgroud)
我是否应该删除Value列并将其替换为 4 个单独的列TextValue、DecimalValue、IntegerValue和BitValue吗?
数据类型将设置为相关内容。这意味着在这 4 列的每一行中,第 3 列将是NULL.
我已经从日期中取平均日期并试图获得平均日期的结果,但它引发了如下错误: Conversion failed when converting date and/or time from character string.
sql查询执行为:
select
CONVERT
(
DATE,
LEFT(
convert(
varchar(10),
AVG(
convert(
int,
convert(
varchar(10),
OnMarkDate,
112
)
)
)
),8
)
)
from @tbl_XMLResult
Run Code Online (Sandbox Code Playgroud)
列值如下:
'2001-10-11',
'2001-10-03',
'2001-09-24',
'2000-05-31',
'2001-10-15',
'2008-01-01'
Run Code Online (Sandbox Code Playgroud)
数据类型为日期。
ID MODEL MODELSTATUS CONTROL
11 100 GOOD XN
24 100 TRENDING BF
33 101 GOOD XN
46 102 BAD BF
50 103 BAD XN
64 103 BAD BF
77 104 PENDING XN
89 104 TRENDING BF
92 105 TRENDING BF
93 105 TRENDING XN
Run Code Online (Sandbox Code Playgroud)
鉴于上面的数据,我将如何返回下面的结果。可以有 1 条或 2 条(最多)具有相同 MODEL 的记录。如果 MODEL 有 2 个记录,则 CONTROL 将不同。
如果 MODESTATUS 为“趋势”,则返回该记录。否则,如果 MODELSTATUS 是 'Pending' 或 'Bad' 返回该记录。否则,如果 MODEL 有 2 条记录,其中 MODELSTATUS 与 CONTROL 的返回记录相同,则为“XN”
ID MODEL MODELSTATUS CONTROL
24 100 …Run Code Online (Sandbox Code Playgroud)