小编And*_*mar的帖子

Microsoft SQL:CASE WHEN vs ISNULL/NULLIF

除了可读性之外,在SQL中防止除以0错误时使用CASE WHEN语句与ISNULL/NULLIF有什么显着的好处?

CASE WHEN (BeginningQuantity + BAdjustedQuantity)=0 THEN 0 
ELSE EndingQuantity/(BeginningQuantity + BAdjustedQuantity) END
Run Code Online (Sandbox Code Playgroud)

VS

ISNULL((EndingQuantity)/NULLIF(BeginningQuantity + BAdjustedQuantity,0),0)
Run Code Online (Sandbox Code Playgroud)

sql-server null

5
推荐指数
1
解决办法
3万
查看次数

对一对多关系的约束

我们有两个表与一对多的关系.我们希望强制执行约束,即给定父记录至少存在一个子记录.

这可能吗?

如果没有,您是否会更改模式以支持此类约束?如果是这样你会怎么做?

编辑:我正在使用SQL Server 2005

sql sql-server database-design constraints

4
推荐指数
1
解决办法
3037
查看次数

TSQL等效的MS Access Crosstab查询

什么相当于TSQL中的MS-Access交叉表查询?还有更好的方法吗?

我有一个像这样组织的数据:

Fish
ID   Name
---- ---------
1    Jack
2    Trout
3    Bass
4    Cat

FishProperty
ID   FishID Property Value
---- ------ -------- -----
1    1      Length   10
2    1      Girth    6
3    1      Weight   4
4    2      Length   6
5    2      Weight   2
6    3      Girth    12
Run Code Online (Sandbox Code Playgroud)

我有许多用户需要对数据进行报告,并且(显然)如果他们能够像这样看到它会更容易:

Fish
ID   Name      Length Girth Weight
---- --------- ------ ----- ------
1    Jack      10     6     4
2    Trout     6            2
3    Bass             12
Run Code Online (Sandbox Code Playgroud)

我的计划是创建一个类似交叉表的视图,他们可以直接报告.

sql t-sql sql-server ms-access

4
推荐指数
1
解决办法
6796
查看次数

使用日期栏中的自动递增日期更新表

我想在Sql Server 2005的date列中使用自动递增日期来更新表。

sql sql-server sql-server-2005

4
推荐指数
1
解决办法
1890
查看次数

SQL比较表中的两行以查找有多少值不同

我有下表用于存储用户数据:

例如

TABLE: users
COLUMNS:
...
maritalStatus (INT)   - FK
gender        (CHAR)
occupation    (INT)   - FK
...
Run Code Online (Sandbox Code Playgroud)

现在我想比较此表中的两个用户,看看有多少列匹配任何两个给定用户(比如用户X和用户Y)

我是通过mySQL存储过程实现的,分别获取每个值然后比较它们

例如

    SELECT maritalStatus from users where userID = X INTO myVar1;
    SELECT maritalStatus from users where userID = Y INTO myVar2;

    IF myVar1 = myVar2 THEN

    ...

    END IF;
Run Code Online (Sandbox Code Playgroud)

使用SQL查询是否有更短的方法,我可以比较表中的两行,看看哪些列不同?我不需要知道它们实际上有多少不同,只需要知道它们是否包含相同的值.此外,我只会比较选定的列,而不是比较用户表中的每一列.

mysql sql

4
推荐指数
1
解决办法
3万
查看次数

将货币符号附加到sql查询的结果

sql查询的结果

select PayerDate,PaymentAmount from Payments
Run Code Online (Sandbox Code Playgroud)

PaymentAmount - 十进制

Date        Amount
12/11/2012  34.31
12/11/2012  95.60
12/11/2012  34.31
Run Code Online (Sandbox Code Playgroud)

可以获得如下查询结果:

Date        Amount
12/11/2012  $34.31
12/11/2012  $95.60
12/11/2012  $34.31
Run Code Online (Sandbox Code Playgroud)

我试过但是找不到太多关于此的信息.

sql sql-server sql-server-2008-r2

4
推荐指数
1
解决办法
4万
查看次数

LINQ混淆 - 应用程序关闭后数据库不存在?

我在C#中创建了一个WinForms应用程序.当我去创建我的数据库对象时,我有两个选项:

  • 本地数据库
  • 基于服务的数据库

我想要的只是一个用于我的项目的简单本地数据库.

但是,如果我选择"本地数据库(精简版)",那么在创建表格并将它们拖到LINQ-To-SQL类创建者之后,它会说:

所选对象使用不受支持的数据提供程序.

因此,我不知道为什么在将表拖到对象关系设计器时,创建本地数据库将被视为不受支持的提供程序.

所以,我尝试了第二种类型,"基于服务的数据库".我在桌子上摆放了我想要的基本应用程序和制作表格.当拖动这些表时,LINQ-To-SQL设计器工作正常,我继续在我的应用程序中编写代码以插入和更新数据库条目.

但是,使用第二个"基于服务的数据库",只要应用程序正在运行,我的插入和更新就会起作用.然而,一旦我关闭它,它就会恢复到之前的状态.如果我通过服务器资源管理器手动添加数据,它会持续存在,但我执行的任何插入都不会保存.

为什么我不能使用LINQ创建和使用本地数据库?

如果这不是一个选项,那么为什么不是"基于服务的数据库"(无论是什么),超出应用程序关闭的持续时间?

谢谢你的时间!


编辑:显然LINQ-To-SQL对象设计器不适用于Compact Edition本地数据库.它仍然可以完成,但你必须使用SqlMetal来生成dmbl文件.

c# linq database sql-server

3
推荐指数
1
解决办法
1143
查看次数

无法在SSRS中编辑或删除计划报告

在SSRS中编辑和删除计划报告时,我当前收到以下错误:"只允许sysadmin角色的成员更新或删除其他登录所拥有的作业."

我已经尝试将作业的所有者更改为SSRS使用的服务帐户,我已将用户添加为sysadmin,并且我已检查Reporting Services本身的受限帐户的用户和密码.没有什么能有所作为.

报告服务日志只显示:

w3wp!library!a!06/03/2009-01:23:42:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.InternalCatalogException: An internal error occurred on the report server. See the error log for more details., ;
 Info: Microsoft.ReportingServices.Diagnostics.Utilities.InternalCatalogException: An internal error occurred on the report server. See the error log for more details. ---> System.Data.SqlClient.SqlException: Only members of sysadmin role are allowed to update or delete jobs owned by a different login.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) …
Run Code Online (Sandbox Code Playgroud)

sql-server reporting-services

3
推荐指数
1
解决办法
3862
查看次数

用于从可能的null db值分配值的优雅语法

对于某些上下文,记录类SaleAmount属性是

public decimal? SaleAmount
{
    get;
    set;
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我会这样做

record.SaleAmount.Value = 
sql.Reader.IsDBNull(IDX_SALEAMOUNT) ? null : 
    sql.Reader.GetDecimal(IDX_SALEAMOUNT);
Run Code Online (Sandbox Code Playgroud)

唉编译器,这不是朋友,因为......

无法确定条件表达式的类型,因为''和'decimal'之间没有隐式转换

那么你如何优雅地表达这一点,并且不要像下面那样玩明显的卡片......

if (!sql.Reader.IsDBNull(IDX_SALEAMOUNT))
    record.SaleAmount = sql.Reader.GetDecimal(IDX_SALEAMOUNT);
Run Code Online (Sandbox Code Playgroud)

或者是最佳解决方案?

c#

3
推荐指数
1
解决办法
3121
查看次数

如何使用group by statement + max函数加速SQL查询?

我有一个包含数百万行的表,我需要做大量的查询,如下所示:

select max(date_field) 
where varchar_field1 = 'something' 
group by varchar_field2;
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 有没有办法创建索引来帮助这个查询?
  • 我有哪些(其他)选项来增强此查询的性能?

sql oracle

3
推荐指数
1
解决办法
9065
查看次数