我有一个SQL Server查询,它需要计算返回的行数,但我需要忽略所有列值都为NULL的行。有些行的某些列的值为空值,但这是可以的。我只需要过滤掉那些都是空值的。
现在,我返回所有行,并使用SqlDataReader迭代返回的行并计算需要的行。如果可能的话,我想把它移到查询本身中。
谢谢!
编辑:我正在尝试做的事情与此类似,但我显然很难让VS SQL编辑器识别我正在做的事情:
SELECT COUNT(sd.[ID])
FROM [Some Data] sd
WHERE sd.[Data Name] = 'something' AND ((sd.q1 IS NOT NUL
我正在使用活动监视器优化我的Server数据库。
两个比较昂贵的sql语句是:
set @codesToPrintCount =
(select count(CodeId)
from Code
where CommissioningFlag = 255
and AggregationLevelId = @codeLevel);
SET @code = (SELECT TOP 1 Serial
FROM Code
WHERE CommissioningFlag = 255
给出一个表,如:
CREATE TABLE "MyTable"
(
"MyColumn" NUMBER NOT NULL
);
我想创建一个视图,如:
CREATE VIEW "MyView" AS
SELECT
CAST("MyColumn" AS BINARY_DOUBLE) AS "MyColumn"
FROM "MyTable";
仅在列"MyColumn“为"NOT NULL”的情况下。
在SQL Server中,这非常简单:
CREATE VIEW [MyV
我的源文件是(|)管道分隔文本文件(.txt)。我正在尝试使用SSIS(SQL Server Data Tools 2012)将文件加载到SQL Server 2012中。我有三列。下面是文件中数据的外观示例。
我希望我的包应该失败,因为这是以管道(|)分隔的,而我的包是成功的,并且第三列的最后一行有多个管道进入最后一列。
我的问题是,为什么包没有失败?我相信它有损坏的数据,因为如果我们使用分隔符,它有更多的列数?如果我想使包失败,如果分隔符的数量多于number列,我有什么选择?
如果列中的记录存在空值,则需要查询帮助才能使我从列A中排除一条记录。
假设我有两行是名为"test“的A列,它们的B列的值分别为1和null。下面是我正在处理的一个查询,在我的场景中,Object ID是A列,and是B列。
select b.PortID,
max(endversion)as EndVersion,
d.ShortName as RuleName
from xr.ObjectPropertyValue a
join moxyportfolio b on a.objectid=b.portkey
join
我在SQL Server 2012数据库中的一个表上有一个位列。
我正在尝试检索此位列为NULL或非TRUE的所有行。
此查询没有返回它应该返回的内容:(返回0行)
Select *
from table
where bit_column_value <> 1
此查询返回正确的行:
Select *
from table
where bit_column_value IS NULL
现在,我很乐意使用第二个查询,但我的问题是,在另一个表的类似查询中,上面的相反情况是正确的,其中第一种方法有效,但第二种方法无效!
有没有人能帮我解释一下上面的区别?我特别将相关的位列更新为NU
我正在更改SQL Server中的现有视图。我的union语句创建了类似以下内容的内容:
Col1 | C2 | C3 | C4
-----|----|------|-----
1 A | B | NULL | NULL
2 A | B | C | NULL
3 A | B | C | D
4 E | F | NULL | NULL
5 E | F | G | NULL
然而,我只想要(在这个场景中)第3行和第5行(我需要省略第1行和第2行,因为它们包含重复的信息-第1、2和3列包
在我们的一个维度表中有keys和values类型的数据结构--键和值列都是nvarchar(500) --我正在进行数据质量检查,以确保pivot查询返回的数字与昏暗表中键的实际值相匹配,这对于大多数键来说都很好。但是,对于某些键,枢轴查询返回的计数小于键值数据结构中的实际值数,例如,其中一个键是Education,值是
Education school
Education sixthform
Education Titulo de Bachiller
Education SQA Highers
...
...
当我运行枢轴查询where Education is not null时,当我在
在这个问题:"“之后,我开始好奇sql server会为这个查询中的列选择什么数据类型:
SELECT NULL as aColumn
所以我运行了这个测试:
select * from (select null as aaa) resulta
UNION ALL
select 6.54
Yelds两行:
aaa
---------------------------------------
NULL
6.54
而这一条:
select * from (select null as aaa) resulta
UNION ALL
select 'ab'
在SQL Serv
如何选择不等于值的行,并且在返回的数据中包含空值?我试过了:
SET ANSI_NULLS OFF
SELECT TOP 30 FROM Mails
WHERE assignedByTeam <> 'team01'
我想返回在列assignedByTeam中没有'team01‘的行,但我也想返回包含nulls的结果。不幸的是,上面的代码不能工作(不返回空值)。
我正在使用MS SQL Server 2008 Express。
我正在制作一个Server到MySQL程序,它允许我在两个相同的表之间同步内容。但是,我很难从一个日期列中插入日期值,该列的一些单元格设置为NULL。它的工作方式应该是使用格式函数将日期列中的每个值转换为字符串。由于我是从一个数组生成每一行并通过一个循环运行它,所以我无法在NULLs退出的情况下手动选择行。这是代码(相当长,所以我剪掉了一些部分,所以请耐心等待):
//SELECT FROM SQL SERVER DB
$mssql_array = array();
$ms_sql = "SELECT * FROM health";
$mssql_query = sqlsrv_
在SQL Server2005中,可以创建持久化且定义为NOT NULL (不能包含NULL值)的计算列。第二个属性在使用像Linq2Sql这样的库时很重要,如果我们想要避免大量的手动工作来确保我们的代码'always‘列有一个值。
使用简单的SQL,这很简单:
ALTER TABLE Sales ADD Total AS (Price + Taxes) PERSISTED NOT NULL
在SQL Server Management studio的设计窗口中查看时,此列将正确显示为计算列,并且没有复选标记“allows”。然而,我在设计器中创建与此模式匹配的新列时遇到问题:公式输入
我有编号(10)列"list_id“,希望检查该字段是空的还是空的。
因此,我运行以下sql语句:
select list_id from item_list where list_id is null
这给了我大约200行字段是完全空的(没有数据)。
然后运行以下sql语句:
select count (list_id) from item_list where list_id is null
令我惊讶的是,返回的计数(List_id)= 0
我遗漏了什么吗?我试图实现的是查找那些list_id为空或空或不包含数据的行。
insert into
@resultSet
SELECT TOP (@topN)
field1,
field2
FROM
dbo.table1 DataLog
WHERE
DataLog.SelectedForProcessing is null
在上面的sql中,我将300传递给@topN,这个值是我在app.config文件中配置的,但是这个在两个不同服务器上运行的查询在一个实例中返回了304行,在另一个实例中返回了307行。
我找不到任何地方可能会干扰300,把它变成304或307,所以我开始怀疑SQL Se
我有一个SQL Server表结构,其中某些列是引用不同查找表的外键。这些列被创建为NOT NULL,并使用DEFAULT value = 1作为ID = 1的查找值,这是我希望分配的默认值,以防在保存记录时传递NULL。
然而,当我尝试Add/Update/Delete这个子表的记录时,我得到了下面的错误。
An attempt was made to remove a relationship between a (*) and a (*). However, one of the relationship's foreign keys (X) cannot be set to n
可能有一种更简单的方法可以做到这一点,但现在我使用一个联合来获得我的结果。在我的查询中,我最终得到了2行数据,而不管driver列是什么。期望的结果是,如果driver列为null,则从结果中排除该行,但如果不为null,则需要包括该行。
2行将是最大值,如果两行都为null,则没有行。
这个是可能的吗?
查询:
SELECT ROUND(当_235不为null时选择ROUND(如果_235不为null,则为'0‘ELSE '’结束,5) AS mi_factor1,ROUND(当_235不为null则为'0‘ELSE '’结束时,选择ROUND,5) AS m
我有一个表input_table,它包含以下列:
key - double
code - string
date- string
result -string
我有以下SAS代码:
PROC SQL;
CREATE TABLE t1 AS
SELECT key, code, date, result
from input_table
ORDER BY key, code, date;
QUIT;
DATA t1;
SET t1;
final_result= INPUT(result, 5.)
RUN;
DATA t2;
SET t1;
在Sql Server中,有没有办法将列的默认值设置为DateTime.Now?
示例:
table Event
Id int (auto-increment) not null
Description nvarchar(50) not null
Date datetime not null
这行代码:
Insert into Event(Description) values('teste');
应该插入一行,并且日期值应该是当前日期。
在SQL server表中,名为SORT_ORDER_VALUE的列可以包含int值或null。所有有值的行都应该按它排序,而那些有空值的行应该放在有有效值的行的下面,并按product_name的字母顺序在它们之间排序。通过赋予一个较高的值9999,我已经设法将那些没有值的值放在SORT_ORDER_VALUE列的底部。但现在我必须按字母顺序对值为9999的那些进行排序。以下是我到目前为止创建的SQL。 SELECT PRODUCT_NAME, PRICE, CASE WHEN SORT_ORDER_VALUE IS NULL THEN 9999 ELSE SORT_ORDER_VALUE
在查询的最后一条语句中,我引用了Table2中不存在的列,SQL Server不验证该错误,在执行后,我获得了Table1中存在的所有列,但没有任何行。
我认为这是错误的,因为返回值告诉我们WHERE查询没有找到任何行,而不是抛出错误。
您能解释一下为什么SQL Server会有这样的行为吗?
使用SQL Server 2014,SSMS 2016编写。
IF OBJECT_ID('dbo.Table1', 'U') IS NOT NULL
DROP TABLE dbo.Table1;
CREATE TABLE Table1
(
ID
我在SQL Server中执行Select操作,假设我的Select正在像这样拉取数据,
ID Col1 Col2 Col3 Col4
1 xx xx xx xx
2 null null null null
3 xx xx null null
我只想要不是所有行都为空的记录。在上面的记录中,我不想要ID= 2的行。
我如何在where子句中做到这一点?
谢谢。
我想将两行合并为一行,然后删除过时的行。这里是我的意思的一个小例子。
初步数据:
id | part A | part B
0 | OK | NULL
1 | NULL | OK
将1合并为0,然后删除1,结果如下。
id | part A | part B
0 | OK | OK
最好的方法是什么。一定有某种合并/合并功能,我忽略了。
提前谢谢。
PS。这可能是一个复制:,但它没有得到一个好的答案。
编辑:我正在使用MS SQL (Server 2012)
我正在使用一个javascript循环来创建一个由图形组成的表格。代码目前可以很好地创建表格,我已经在其中添加了一些样式。我遇到的问题是找到一种方法来比较单元格列中的数据,以便突出该列在该组中的最佳和最差表现。
下面是我正在使用的javascript函数。
function performanceMetricsLoad() {
var records = storePerformanceMetricsData.getRecordsValues();
var groupTracker = null;
var assetTracker = null;
var htmlStr;
htmlStr =
Msg 515,级别16,状态2,过程CreateParty,第16行不能将值NULL插入到表‘DEVIN.dbo.Party’列'Id‘中;
列不允许空。插入失败。声明已被终止。
(1行受影响)
搞什么鬼?我的桌子是
Id (Primary Key)
FirstName
LastName
这是我的存储过程:
USE [DEVIN]
GO
/****** Object: StoredProcedure [dbo].[CreateParty] Script Date: 11/19/2010 16:59:43 ******/
SET ANSI_NULLS ON
GO
SET Q
我使用的是VB.net 2013和SQL Server 2012。我有一个包含两列EmployeeName和Date的表tblEmployeeInfo
EmployeeName Date
--------------------
Jay Null
Mike Null
Paul Null
当我在Textbox1中输入一个日期值(如3/20/2017 )时,它会将该值插入到列Date的所有行中。
EmployeeName Date
-------------------------
Jay 3/20/201
Server 2008中有一个存储过程,如下所示。
ALTER PROCEDURE myStoredProcedure
@Id int,
@hin varchar(30),
@checkValue varchar(30),
@CounterDeceasedPatients int=0 OUTPUT
insert into myTable
values (@Id, @hin, GETDATE())
if (@checkValue is not null)
BEGIN
set @CounterDeceasedPatient
我在ORACLE中键入以下SQL并将其传递:
select 1 from dual where 0=null;
为什么SQL通过了,而且看起来很奇怪,没有编译错误。此外,如果null是表中的varchar2列,它也将传递。
create table test
(
a varchar2(100),
b varchar2(100)
)
insert into test(a,b) VALUES (null, 'abc');
commit;
select * from test where a=0
更新:
因为列'a‘是varchar2类型,0是数字类型,如果a不