我想检查WHERE子句中单个SQL语句中多列的is not null约束,有没有办法这样做?另外,我不想要NOT NULL在列定义上强制执行类型约束.
SELECT * FROM AB_DS_TRANSACTIONS
WHERE FK_VIOLATION IS NULL
AND TRANSACTION_ID NOT IN(
SELECT distinct TRANSACTION_ID FROM AB_TRANSACTIONS)
AND COUNTRY_ID IS NOT NULL
AND GEO_CUST_COUNTRY_ID IS NOT NULL
AND INVOICE_DATE IS NOT NULL
AND ABB_GLOBALID IS NOT NULL
AND SALES_ORG_ID IS NOT NULL
AND DIST_ID IS NOT NULL
AND CUSTOMER_ID IS NOT NULL
AND REPORT_UNIT_ID IS NOT NULL
AND CURR_INVOICE IS NOT NULL
AND DIVISION_CODE IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
因此,我不是一次又一次地使用IS NOT NULL,而是想简化一些事情
我正在使用SQL Server 2012并且有两个具有相同结构的表.如果表2中尚不存在新记录,我想从表1到表2插入新记录.
如果它们已经存在,我想更新表2中的所有现有记录.
我的表中有大约30列,我想更新所有列.
有人可以帮忙吗?我查看了通过互联网发布的各种链接,但我不明白我的陈述应该是什么样子.
我有一个现有的列 ( ROLE) ,其默认值需要从'zzzz'更新为'S'。
我尝试使用以下查询,这显然不起作用:
ALTER TABLE [TRANSACTIONS] ALTER COLUMN [ROLE] ADD DEFAULT('S') ;
Run Code Online (Sandbox Code Playgroud)
有人可以帮助了解是否甚至可以更新列默认值,如果是,那么如何?
谢谢
我有这个查询,我试图使用它对我的数据进行分类。如果第一个字符在0到9之间,我想用第一个字符来分类。如果是其他任何东西,包括特殊字符或字母,那么我想使用 10。
select CUSTOMER_ID, CASE
WHEN LEFT(CUSTOMER_ID, 1) BETWEEN 0 AND 9 THEN LEFT(CUSTOMER_ID, 1)
ELSE '10'
END
AS CUST_DIGIT
from CUSTOMER
Run Code Online (Sandbox Code Playgroud)
运行上述查询时出现此错误:
将 nvarchar 值“A”转换为数据类型 int 时转换失败。
这就是我的数据的样子。你能帮我指出我可以改变的地方吗?

我有一个场景,我需要根据产品确定每个客户/业务组合的保证金类型 - 这意味着客户/业务组合的保证金最高的产品应被标识为“高”保证金类型。具有相同组合的所有其他产品应标识为低。所以,我需要一个 SQL 来相应地更新列 MARGIN_TYPE。
我尝试做这样的事情,但不明白如何按客户/业务组合对其进行分组。任何帮助将不胜感激。谢谢!
UPDATE ORDER_TABLE
SET MARGIN_TYPE = 'High'
where MARGIN = (SELECT MARGIN FROM (SELECT MAX(MARGIN) FROM ORDER_TABLE) AS
MARGIN)
Run Code Online (Sandbox Code Playgroud)