相关疑难解决方法(0)

SQL Server Pivots:将行值显示到列标题

我有一个表(项目),格式如下:

ITEMNO | WEEKNO | VALUE  
A1234  |   1    |  805  
A2345  |   2    |  14.50  
A3547  |   2    |  1396.70  
A2208  |   1    |  17.65  
A4326  |   6    |  19.99
Run Code Online (Sandbox Code Playgroud)

这是一张表格,显示给定周内物品的销售价值.

结果或我想以表格格式显示的是一行中的项目编号,后面是包含值的每周的列,例如

ITEMNO | WK1 | WK2 | WK3 | WK4 | WK5  ...etc up to 52  
A1234  | 805 | 345 | 234 | 12  | 10   ...etc up to 52  
A2345  |  23 | 12  | 456 | 34  | 99   ...etc up to 52  
A3456  | …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

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

T-SQL在引用表中找到完全相同的值

假设我的Sql Serer 2008数据库中有3个表:

CREATE TABLE [dbo].[Properties](
    [PropertyId] [int] NOT NULL,
    [PropertyName] [nvarchar](50) NOT NULL
)

CREATE TABLE [dbo].[Entities](
    [EntityId] [int] NOT NULL,
    [EntityName] [nvarchar](50) NOT NULL
)    

CREATE TABLE [dbo].[PropertyValues](
    [EntityId] [int] NOT NULL,
    [PropertyId] [int] NOT NULL,
    [PropertyValue] [int] NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
  1. 表属性包含可能的属性集,可以为业务对象设置可以设置的值.
  2. 表实体包含从app配置的业务对象.
  3. 表3包含业务对象的选定属性值.每个业务对象都可以包含自己的一组属性(即,可以为第一个对象配置"Property1",但不为第二个对象配置).

我的任务是找到与给定对象完全相同的业务对象(具有完全相同值的完全相同的属性集的对象).表现至关重要.

有什么建议?

[ADDED]例如,Entities表中有一个EntityId = 1的条目.在PropertyValues表中有3行与此条目相关:

 EntityId  PropertyId  PropertyValue
 1         4           Val4
 1         5           Val5
 1         6           Val6
Run Code Online (Sandbox Code Playgroud)

要求是在Entity表中找到PropertyValues表中有3个相关行的其他条目,这些行包含与EntityId = 1的行相同的数据(除了EntityId列)

[已添加]请参阅我的新问题:存储数据的最佳方法,哪些属性可能会有所不同

[BOUNTY1]谢谢大家.答案非常有帮助.我的任务很复杂(但这种复杂性在性能方面很有用).请看下面的详细信息:

  • 添加了名为EntityTypes的新表
  • EntityTypeId列已添加到"实体"和"属性"表中
  • 现在,有几种类型的实体.每个实体都有自己的一组属性.

    是否可以使用此信息提高性能?

[BOUNTY2]有第二个并发症:

  • IsDeleted列被添加到Property表中
  • PropertyValues表可以具有已从数据库中删除的Properties的值.具有此类属性的实体被视为无效.
  • 某些实体没有EntityType集的每个属性的值.这些实体也被视为无效.

问题是:我如何编写一个脚本,为他们选择所有实体和附加列IsValid.

t-sql sql-server

2
推荐指数
1
解决办法
1031
查看次数

奇怪的SQL Server类型转换问题

我今天遇到了奇怪的问题.我的一个项目是运行.NET + SQL Server 2005 Express.我使用一个查询进行一些过滤.

SELECT *
  FROM [myTable]
  where UI = 2011040773395012950010370
GO

SELECT *
  FROM [myTable]
  where UI = '2011040773395012950010370'
GO
Run Code Online (Sandbox Code Playgroud)

UI列nvarchar(256)和传递给过滤器的UI值始终为25位.

在我的DEV环境中 - 两个查询都返回相同的行而没有错误.但是在我的客户,运行几个月后,第一个版本开始返回类型转换错误.

知道为什么吗?

我不是在寻找解决方案 - 我正在寻找解释为什么在一个环境中它起作用而在另一个环境中却没有,为什么突然之间它开始返回错误而不是结果.我在两者上都使用相同的工具(SQL Server Management Studio Express和2个不同的.NET客户端)

环境或多或少相同(W2k3 + SQL Server 2005 Express)

t-sql sql-server-2005 .net-2.0

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

Sql Server - VARCHAR长度是否表示最大字符数或字节数?

对于类型的SQL Server列

VARCHAR(100)

在插入列之前,我想确保插入的值不大于100. 该数字是指定它可以存储的最大字符数,还是它可以存储的字符数据的字节数

我问的原因是一些unicode特殊字符使用多个字节.因此,以unicode编码的100个字符串可能占用超过100个字节.

由于varchar是ASCII编码,任何ASCII字符是否可能占用多个字节(可能需要检查字节长度)?

(编辑:根据我对问题的反馈,我看到varchar应该用于ASCII和nvarcharunicode.)

c# sql-server string

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

标签 统计

sql-server ×3

t-sql ×3

.net-2.0 ×1

c# ×1

sql-server-2005 ×1

string ×1