javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

sql-为什么where子句中没有窗口函数?

标题说明了一切,为什么我不能在SQL Server的where子句中使用窗口函数?

此查询非常合理:

select id, sales_person_id, product_type, product_id, sale_amount
from Sales_Log
where 1 = row_number() over(partition by sales_person_id, product_type, product_id order by sale_amount desc)

但这是行不通的。 有没有比CTE /子查询更好的方法?

编辑

对于CTE查询,其价值是什么:

with Best_Sales as (
    select id, sales_person_id, product_type, product_id, sale_amount, row_number() over (partition by sales_person_id, product_type, product_id order by sales_amount desc) rank
    from Sales_log
)
select id, sales_person_id, product_type, product_id, sale_amount
from Best_Sales
where rank = 1

编辑

+1为子查询显示的答案,但实际上我正在寻找无法在where子句中使用窗口函数的原因。

trans by 2020-02-22T18:28:05Z

SQL Server检查是否区分大小写?

如何检查SQL Server中的数据库是否区分大小写? 我以前一直在运行查询:

SELECT CASE WHEN 'A' = 'a' THEN 'NOT CASE SENSITIVE' ELSE 'CASE SENSITIVE' END

但是我正在寻找其他方式,因为这实际上在过去给了我很多问题。

编辑-更多信息:现有产品具有许多预写的存储过程。 在存储过程中@test != @TEST取决于服务器本身的敏感度。 因此,我要寻找的是检查服务器灵敏度的最佳方法。

trans by 2020-02-22T11:39:00Z

SQL Server 2005-如何从表的列中删除默认值?

如何更改列以删除默认值?

该列的创建是:

 ALTER table sometable Add somecolumn nchar(1) NOT NULL DEFAULT 'N'

然后更改为:

 alter table sometable alter column somecolumn nchar(1) null

允许为空,但保留默认值。 您如何删除它?

trans by 2020-02-21T16:25:34Z

sql server-测试列存在,添加列和更新列

我正在尝试编写SQL Server数据库更新脚本。 我想测试表中是否存在一列,然后如果不存在,请添加具有默认值的列,最后根据同一表中另一列的当前值来更新该列。 我希望此脚本可以多次运行,第一次更新表时以及在随后的运行中应忽略该脚本。 我的脚本当前如下所示:

IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'PurchaseOrder' AND COLUMN_NAME = 'IsDownloadable')
BEGIN

ALTER TABLE [dbo].[PurchaseOrder] ADD [IsDownloadable] bit NOT NULL DEFAULT 0

UPDATE [dbo].[PurchaseOrder] SET [IsDownloadable] = 1 WHERE [Ref] IS NOT NULL

END

SQL Server返回错误“无效的列名'IsDownloadable'”,即我需要先提交DDL,然后才能更新该列。 我尝试了各种排列,但进展很快。

trans by 2020-02-19T12:12:48Z

tsql-如何用年,月和日来计算T-SQL中的年龄

在T-SQL(SQL Server 2000)中计算某人的年,月和日的年龄的最佳方法是什么?

datediff函数不能很好地处理年份的界限,而且将月份和日期分开将是一个负担。 我知道我可以在客户端相对容易地做到这一点,但是我想在我的存储过程中完成它。

trans by 2020-02-19T05:45:31Z

sql server-如何在SQL中为每个组返回增量组号

我想在SQL中创建一个数据查询,以对行的组进行递增编号,在一个公共日期时间进行分组,并在下一个日期时间使“组编号”保持递增,依此类推。 正如我在使用partition by语句时所看到的那样,这些“组号”一定不能为每个组重置。 这是我的示例数据:

ts_DateTime          |ID   |Value|RowFilter|RequiredResult
--------------------------
2013/01/09 09:23:16  |8009 |0    |1        |1
2013/01/09 09:23:16  |8010 |0    |2        |1
2013/01/09 09:23:16  |8026 |0    |3        |1

2013/01/09 09:23:22  |8026 |0    |1        |2

2013/01/09 09:23:28  |8009 |0    |1        |3
2013/01/09 09:23:28  |8010 |0    |2        |3
2013/01/09 09:23:28  |8026 |0    |3        |3

2013/01/09 09:27:03  |8009 |0    |1        |4
2013/01/09 09:27:03  |8010 |0    |2        |4
2013/01/09 09:27:03  |8026 |0    |3        |4

2013/01/09 09:27:09  |8009 |0    |1        |5
2013/01/09 09:27:09  |8010 |0    |2        |5
2013/01/09 09:27:09  |8026 |0    |3        |5

2013/01/09 09:27:15  |8009 |0    |1        |6
2013/01/09 09:27:15  |8010 |0    |2        |6
2013/01/09 09:27:15  |8026 |0    |3        |6


我用来获取这些结果的查询是:

select hl.ts_DateTime,  hl.Tagname as [ID],  hl.TagValue as [Value],
ROW_NUMBER() OVER (PARTITION BY hl.ts_datetime ORDER BY hl.tagname) AS RowFilter
from Table1 hl

因此,基本上,查看RowFilter列,我将获得每个ts_DateTime分区的唯一ROW号。 我真正需要的是,对于每个ts_DateTime分区,RowFilter列应看起来像Required结果列。

trans by 2020-02-16T22:08:06Z

sql server-C#SQL Top作为参数

尝试在我的sql语句中参数化TOP的值。

SELECT TOP @topparam * from table1

command.Parameters.Add("@topparam",SqlDbType.VarChar, 10).Value = somevalue.ToString();

这似乎不起作用。 有人有什么建议吗?
只是为了澄清,我不想使用存储过程。

trans by 2020-02-16T22:01:13Z

在Sql中更改用户定义的类型

我在数据库中创建了一些用户定义的类型,如下所示

CREATE TYPE [dbo].[StringID] FROM [nvarchar](20) NOT NULL

并分配给各种表格。 我在db中的表处于各种模式(不仅是dbo)

但是我意识到我需要更大的字段,并且需要更改,例如从nvarchar增加到nvarchar,但是没有ALTER TYPE语句

我需要一个临时配置表/光标的脚本,并在其中保存使用我的类型的所有表和字段。 然后将现有字段更改为基本类型-例如 从CustID [StringID]到CustID [nvarchar(20)]。删除用户类型并使用新类型重新创建它-例如 nvarchar(50)最后将字段设置为用户类型

我没有在类型上定义规则,因此不必删除规则并重新添加它们

我对T-Sql不太熟悉,因此不胜感激。

trans by 2020-02-16T07:54:01Z

tsql-SQL Server从日期时间删除毫秒

select *
from table
where date > '2010-07-20 03:21:52'

我希望不会给我任何结果...除了我得到的日期时间是2745299967337300900992的记录

如何使查询忽略毫秒?

trans by 2020-02-13T05:05:38Z

如何从SQL Server发送电子邮件?

如何使用T-SQL发送电子邮件但电子邮件地址存储在表中? 我想遍历表格并能够发送电子邮件。 到目前为止,我找不到一个很好的例子。

谢谢你的帮助

trans by 2020-02-12T22:31:14Z

tsql-SQL Server数据库名称中哪些字符有效?

我们将为客户提供一个工具(除其他功能外),该工具可以创建新的SQL Server数据库,并且我希望能够对他们提供的数据库名称进行基本验证。 SQL Server的文档说明了数据库名称中哪些字符有效。 但是,该文档显然是不正确的,因为我可以成功创建名称违反文档规则的数据库。

根据SQL Server的CREATE DATABASE文档,数据库名称必须符合标识符规则。 标识符规则取决于数据库兼容性级别。 兼容性级别为100时(根据SQL Server Management Studio,其含义为“ SQL Server 2008”),名称必须以Unicode字母_CREATE DATABASE " "|开头; 后跟一个或多个字母,数字,"$#_。文档明确指出不允许使用空格或特殊字符。

这与现有证据不符,因为我可以使用SQL Server Management Studio创建一个名称为CREATE DATABASE " "的数据库-该数据库不仅包含嵌入式空间(明确禁止),而且还包含非常规字符(|") 在文件名中甚至都无效。 我检查了一下,并且数据库的兼容性级别确实是“ SQL Server 2008(100)”,即使其名称在该兼容性级别上被证明无效。

哎呀,我什至可以做CREATE DATABASE " "(是的,这是一个空格),这证明第一个字符不必是字母,下划线,符号或井号。

所以我想我的问题是,在SQL Server数据库名称中哪些字符有效? 是否有任何记录的规则与SQL Server的实际行为一致?

trans by 2020-02-09T19:45:30Z

sql-使用TSQL确定表的主键

我想使用TSQL确定表的主键(存储过程或系统表都可以)。 SQL Server(2005或2008)中是否存在这种机制?

trans by 2020-02-09T06:14:26Z

SQL Server-真正的SQL国家字符(NCHAR)数据类型是什么?

NVARCHAR N''CHARACTER (CHARACTER VARYING)外,SQL还提供NCHAR (NATIONAL CHARACTER)和273905867294821616838 (NATIONAL CHARACTER VARYING)类型。 在某些数据库中,这是用于字符(非二进制)字符串的更好的数据类型:

  • 在SQL Server中,NVARCHAR存储为UTF-16LE,并且是可靠存储非ASCII字符的唯一方法,N''仅是单字节代码页;

  • 在Oracle中,NVARCHAR可以存储为UTF-16或UTF-8而不是单字节排序规则。

  • 但是在MySQL中,NVARCHARN'',因此没有区别,任何一种类型都可以使用UTF-8或任何其他排序规则进行存储。

那么,如果有的话,NVARCHAR在概念上实际上意味着什么? 供应商的文档仅告诉您他们自己的DBMS使用什么字符集,而不是实际的依据。 同时,SQL92标准对功能的解释甚至没有多大帮助,仅指出N''存储在实现定义的字符集中。 与仅CHARACTER(存储在实现定义的字符集中)相反。 这可能是不同的实现定义的字符集。 或不。

谢谢,ANSI。 坦西

是否应该将NVARCHAR用于所有字符(非二进制)存储目的? 当前流行的DBMS是否会在其中做一些不良的事情,或者只是无法识别关键字(或273905867294821616833文字)?

trans by 2020-02-08T21:45:52Z

tsql-如何在包含数字的SQL Server中对VARCHAR列进行排序?

我在SQL Server 2000数据库中有一个VARCHAR列,其中可以包含字母或数字。 这取决于在前端为客户配置应用程序的方式。

当它确实包含数字时,我希望对其进行数字排序,例如 为“ 1”,“ 2”,“ 10”,而不是“ 1”,“ 10”,“ 2”。 仅包含字母,字母和数字(例如“ A1”)的字段可以按字母顺序进行排序。 例如,这将是可接受的排序顺序。

1
2
10
A
B
B1

实现此目标的最佳方法是什么?

trans by 2020-02-08T20:17:19Z

我如何以编程方式检查(解析)SQL语句的有效性?

我正在尝试使集成测试更加幂等。 一个想法是在每次测试后执行回滚,另一个想法是以某种方式以编程方式解析文本,类似于Query Analyzer或SSMS中的绿色复选框。

如何使SQL Server解析命令而不在不使用ADO.NET的情况下运行它?

更新:最终,这是所需的:

using (DbCommand executeOnly = Factory.DbCommand())
{
    executeOnly.Connection = command.Connection;
    executeOnly.CommandType = CommandType.Text;
    executeOnly.CommandText = "SET NOEXEC ON;" + sqlCommand;
    executeOnly.Connection.Open();
    executeOnly.ExecuteNonQuery();
}
//set more properties of command.
command.Execute();

由于无法解释的原因,“ SET PARSEONLY ON”仅在查询分析器中起作用。 我无法在ADO.NET连接上进行设置。 同样好,因为PARSEONLY似乎仅捕获语法错误,这不是常见错误。 SET NOEXEC ON将捕获各种各样的错误,例如引用存储过程中缺少表或列或参数的视图。

trans by 2020-02-08T00:13:47Z

sql-什么时候应该使用全文索引?

我们有一堆查询,可以“搜索”客户,客户等。您可以通过名字,电子邮件等进行搜索。我们以下列方式使用LIKE语句:

SELECT * 
FROM customer 
WHERE fname LIKE '%someName%'

全文索引在这种情况下有帮助吗? 我们正在使用SQL Server 2005。

trans by 2020-02-07T19:24:31Z

sql-如何检测一个字符串是否至少包含一个数字?

如何在SQL Server 2005中检测字符串是否至少包含一个数字(数字)?

trans by 2020-02-07T10:27:37Z

tsql-如何在SQL中以0开头的月份和日期? (例如9 => 09)

DECLARE @day CHAR(2)

SET @day = DATEPART(DAY, GETDATE())

PRINT @day

如果今天是12月9日,则上面将显示“ 9”。

我想打印“ 09”。 我该怎么做呢?

trans by 2020-02-07T06:52:46Z

sql-如何重写DISTINCT FROM和不是DISTINCT FROM?

如何在不支持它们的SQL实现(例如Microsoft SQL Server 2008R2)中重写包含标准IS DISTINCT FROMIS NOT DISTINCT FROM运算符的表达式?

trans by 2020-02-07T04:34:54Z

将Xml转换为Table SQL

我不知道如何读取xml数据并将其转换为TSQL中的表?

例如:

<row>
    <IdInvernadero>8</IdInvernadero>
    <IdProducto>3</IdProducto>
    <IdCaracteristica1>8</IdCaracteristica1>
    <IdCaracteristica2>8</IdCaracteristica2>
    <Cantidad>25</Cantidad>
    <Folio>4568457</Folio>
</row>
<row>
    <IdInvernadero>3</IdInvernadero>
    <IdProducto>3</IdProducto>
    <IdCaracteristica1>1</IdCaracteristica1>
    <IdCaracteristica2>2</IdCaracteristica2>
    <Cantidad>72</Cantidad>
    <Folio>4568457</Folio>
</row>      

8   3   8   8   25  4568457
3   3   1   2   72  4568457
trans by 2020-02-05T19:22:53Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共20页