javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

sql server-计算SQL中两个日期之间的完整月份数

我需要计算SQL中的完整月数,即

  • 2009-04-16至2009-05-15 => 0整个月
  • 2009-04-16至2009-05-16 => 1个月
  • 2009-04-16至2009-06-16 => 2个月

我尝试使用DATEDIFF,即

SELECT DATEDIFF(MONTH, '2009-04-16', '2009-05-15')

但是没有给我两个日期之间的完整月份,而是给了我月份部分的差额,即

1

有谁知道如何计算SQL Server中的完整月份数?

trans by 2020-02-23T01:21:40Z

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查询以列出SQL Server 2005数据库中的所有视图

我需要一个SQL查询来枚举SQL Server 2005中特定数据库的所有视图(我只需要视图名称)。在此先感谢!

trans by 2020-02-22T11:45:48Z

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-java.sql.SQLException:找不到适用于jdbc:microsoft:sqls的驱动程序

当我尝试运行此程序时,出现此异常。 这是微软的例子之一。 我已经通过项目属性将sqljdbc4.jar添加到了netbeans的类路径中,以便进行编译和运行。 我还测试了可以使用下面的import语句找到该类-编译期间没有错误,因此它必须找到jar。

可能与sqldbc4.jar引用的dll或某些sql dll相关吗?

这是确切的例外,下面是确切的代码(密码除外)。

例外:

run:
java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=HealthCareDatabase
Error Trace in getConnection() : No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=HealthCareDatabase
Error: No active Connection
    at java.sql.DriverManager.getConnection(DriverManager.java:602)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at javaapplication1.Connect.getConnection(Connect.java:35)
    at javaapplication1.Connect.displayDbProperties(Connect.java:50)
    at javaapplication1.JavaApplication1.main(JavaApplication1.java:23)
BUILD SUCCESSFUL (total time: 1 second)

码:

 package javaapplication1;
import com.microsoft.sqlserver.jdbc.SQLServerDriver;

import java.*;

public class Connect {

    private java.sql.Connection con = null;
    private final String url = "jdbc:microsoft:sqlserver://";
    private final String serverName = "localhost";
    private final String portNumber = "1433";
    private final String databaseName = "HealthCareDatabase";
    private final String userName = "larry";
    private final String password = "xxxxxxx";

    // Constructor
    public Connect() {
    }

    private String getConnectionUrl() {
        return url + serverName + ":" + portNumber + ";databaseName=" + databaseName ;
    }

    private java.sql.Connection getConnection() {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            con = java.sql.DriverManager.getConnection(getConnectionUrl(), userName, password);
            if (con != null) {
                System.out.println("Connection Successful!");
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Error Trace in getConnection() : " + e.getMessage());
        }
        return con;
    }

    public void displayDbProperties() {
        java.sql.DatabaseMetaData dm = null;
        java.sql.ResultSet rs = null;
        try {
            con = this.getConnection();
            if (con != null) {
                dm = con.getMetaData();
                System.out.println("Driver Information");
                System.out.println("\tDriver Name: " + dm.getDriverName());
                System.out.println("\tDriver Version: " + dm.getDriverVersion());
                System.out.println("\nDatabase Information ");
                System.out.println("\tDatabase Name: " + dm.getDatabaseProductName());
                System.out.println("\tDatabase Version: " + dm.getDatabaseProductVersion());
                System.out.println("Avalilable Catalogs ");
                rs = dm.getCatalogs();
                while (rs.next()) {
                    System.out.println("\tcatalog: " + rs.getString(1));
                }
                rs.close();
                rs = null;
                closeConnection();
            } else {
                System.out.println("Error: No active Connection");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        dm = null;
    }

    private void closeConnection() {
        try {
            if (con != null) {
                con.close();
            }
            con = null;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws Exception {
        Connect myDbTest = new Connect();
        myDbTest.displayDbProperties();
    }

}

trans by 2020-02-21T16:35:52Z

通过Management Studio从SQL Server 2012导出到.CSV

我有一个要导出到.CSV的SQL Server 2012数据库。我对SQL的了解非常基础,我的问题是,我假设它将在Management Studio中完成,该怎么做?

trans by 2020-02-21T12:45:18Z

如何将SQL Server 2005数据传输或导出到Ex

我有一个简单的SQL“选择”查询,我想将结果转储到Excel文件中。 我只能另存为.csv并转换为.xls会创建一些超级丑陋的输出。 无论如何,据我所知(使用Google),这似乎并不那么简单。 任何帮助将不胜感激。

trans by 2020-02-20T06:50:42Z

sql server-SQL中的十进制值用于除以结果

在SQL中,我有decimal(col1/col2,2)col1=3。两者都是整数。

我想这样做:

select col1/col2 from tbl1

我得到的结果decimal(col1/col2,2)其中col1=3col2=2

我想要的结果是decimal(col1/col2,2)

我放了decimal(col1/col2,2)。结果仍然是1。

我放了decimal(col1/col2,2)。十进制未内置函数。

我如何确切地获得1.1?

trans by 2020-02-19T19:35:57Z

无法找到对象,因为它不存在或您没有权限。 SQL错误

我有一个数据库,并且有一个Sql脚本将一些字段添加到数据库中名为“ Products”的表中。

但是,当我执行此脚本时,出现以下错误:

Cannot find the object "Products" because it does not exist or you do not have permissions

为什么会发生错误,我该怎么办才能解决?

trans by 2020-02-19T19:29:51Z

SQL Server-VARCHAR是否像1990年代一样?

  1. VARCHAR不存储Unicode字符。
  2. NVARCHAR确实存储Unicode字符。
  3. 当今的应用程序应始终兼容Unicode。
  4. NVARCHAR占用两倍的空间来存储它。
  5. 第4点无关紧要,因为存储空间非常便宜。

因此,在设计SQL Server数据库时,应该始终使用NVARCHAR。

这听起来合理吗? 是否有人不同意任何前提?今天有什么理由选择VARCHAR而不是NVARCHAR?

trans by 2020-02-19T15:22:37Z

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

sql-在特定d之后列出行

我的数据库中有一列名为datetime的“ dob”。 如何在SQL Server 2005中的特定DoB之后选择所有行?

trans by 2020-02-18T09:28:52Z

条件JOIN语句SQL

是否可以执行以下操作:

IF [a] = 1234 THEN JOIN ON TableA 
ELSE JOIN ON TableB

如果是这样,正确的语法是什么?

trans by 2020-02-18T04:33:40Z

c#-不支持的关键字:Metad

这行:

WebSecurity.InitializeDatabaseConnection(connectionStringName: "DefaultConnection", userTableName: "UserProfile", userIdColumn: "UserID", userNameColumn: "UserName", autoCreateTables: true);

抛出:

System.Data.dll中发生“ System.ArgumentException”,但未在用户代码中处理

附加信息:不支持的关键字:“元数据”。

我的连接字符串是:

add name="DefaultConnection" connectionString="metadata=res://*/TalyllynModel.csdl|res://*/TalyllynModel.ssdl|res://*/TalyllynModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=***********;initial catalog=********;persist security info=True;user id=*********;password=********;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.SqlClient" /></connectionStrings>

不知道哪里错了。

trans by 2020-02-18T02:34:53Z

SQL Server-编写脚本后,SQL Management Studio将无法识别表存在

因此,如果在数据库上单击刷新后在SQL Management Studio的查询编辑器中创建了一个新表,则可以看到并使用该表。 但是,如果我想运行另一个查询来从查询编辑器中引用该表,则不会重新协调该表的存在。 我已经尝试在数据库级别和表级别进行刷新,但这没有什么区别。 但是,如果我退出管理工作室,则重新打开它会很好。

USE [DataBaseName]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[States](
    [StateAbbreviation] [nchar](2) NOT NULL,
    [StateFullName] [nchar](30) NULL,
GO

所以我运行该程序,然后运行此程序。

INSERT INTO States
SELECT *
FROM ExistingStatesTable

这不能说国家不存在。 同样,国家也不会出现在智力上。 我该怎么办

trans by 2020-02-17T19:44:53Z

检查SQL Server中是否存在触发器的最简便方法是什么?

我正在寻找最可移植的方法来检查MS SQL Server中是否存在触发器。 它至少需要在SQL Server 2000、2005以及2008上才能运行。

该信息似乎不在INFORMATION_SCHEMA中,但是如果它在某处,我希望从那里使用它。

我知道这种方法:

if exists (
    select * from dbo.sysobjects 
    where name = 'MyTrigger' 
    and OBJECTPROPERTY(id, 'IsTrigger') = 1
) 
begin

end

但是我不确定它是否适用于所有SQL Server版本。

trans by 2020-02-17T13:57:25Z

SQL Server-将SSMS .rpt输出文件转换为.txt / .cs

我想将大型SSMS(SQL Server Management Studio)查询结果(2.5m行,9个字段)导出为.csv或逗号分隔的.txt(带有标题)。 (MS SQL Server 2005管理Studio。)

这样我就可以将其逐行读取到VBA程序中(以对数据进行某些计算)或在Excel中对其进行查询(例如使用Microsoft Query)。 计算很复杂,与SSMS相比,我更喜欢在其他地方进行计算。

如果我在SSMS中选择“文本查询结果”和一个小的答案(几行,例如最多200k),我当然可以简单地复制并粘贴到文本编辑器中。 对于这里的大答案,我当然可以一次将20万行左右的行复制和粘贴10次,并粘贴到类似Ultra-Edit的文本编辑器中。 (当我一次尝试全部2.5m时,我会在SSMS中收到内存警告。)但是,为了将来,我想要一个更优雅的解决方案。

对于“查询结果到文件”,SSMS始终写入.rpt文件。 (当您在结果窗口中右键单击并选择“另存为”时,将出现与上面相同的存储错误。)

->因此,看来我唯一的选择是让SSMS将其结果输出到文件(即.rpt),然后再将.rpt转换为.txt。

我认为这个.rpt是Crystal Reports文件吗? 还是不是。 我的PC上没有Crystal Reports,所以我不能用它来转换文件。

在Ultra-Edit中打开.rpt时,它看起来不错。 但是,在Excel中的Microsoft Query中,标题不希望显示。

当我简单地使用VBA读写.rpt时,文件大小减半。 (330到180兆)。 在Microsoft Query中,标题确实显示了(尽管第一个字段名称有一个有趣的前导字符,在其他完全不同的情况下,这是我以前遇到的情况)。 我似乎确实能够在Excel中对其进行有意义的数据透视表。

但是,当我在Ultra-Edit中打开此新文件时,它会显示中文字符! 某个地方还会有一些有趣的人物吗?

->某处可能有免费(且简单/安全)的转换器应用程序。 还是我应该相信这个.txt文件适合阅读我的VBA程序。

谢谢

trans by 2020-02-17T09:18:35Z

.net-如何在C#中直接执行SQL查询?

好的,我有一个完全符合我需要的旧批处理文件。 但是,由于没有进行新的管理,我们无法再运行批处理文件,因此我需要使用C#进行启动。

我正在使用Visual Studio C#,并且已经为需要构建的应用程序设置了表单。 (我正在学习中)

这是我需要在C#中完成的工作(这是批处理胆量)

sqlcmd.exe -S .\PDATA_SQLEXPRESS -U sa -P 2BeChanged! -d PDATA_SQLEXPRESS  -s ; -W -w 100 -Q "SELECT tPatCulIntPatIDPk, tPatSFirstname, tPatSName, tPatDBirthday  FROM  [dbo].[TPatientRaw] WHERE tPatSName = '%name%' "

基本上,它使用SQLCMD.exe和已存在的名为PDATA_SQLExpress的数据源。
我已经搜寻并接近了,但是从哪里开始我仍然茫然。

trans by 2020-02-17T04:59:19Z

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

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