我有一个表(项目),格式如下:
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) 假设我的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)
我的任务是找到与给定对象完全相同的业务对象(具有完全相同值的完全相同的属性集的对象).表现至关重要.
有什么建议?
[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]谢谢大家.答案非常有帮助.我的任务很复杂(但这种复杂性在性能方面很有用).请看下面的详细信息:
现在,有几种类型的实体.每个实体都有自己的一组属性.
是否可以使用此信息提高性能?
[BOUNTY2]有第二个并发症:
问题是:我如何编写一个脚本,为他们选择所有实体和附加列IsValid.
我今天遇到了奇怪的问题.我的一个项目是运行.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)
对于类型的SQL Server列
VARCHAR(100)
在插入列之前,我想确保插入的值不大于100. 该数字是指定它可以存储的最大字符数,还是它可以存储的字符数据的字节数?
我问的原因是一些unicode特殊字符使用多个字节.因此,以unicode编码的100个字符串可能占用超过100个字节.
由于varchar是ASCII编码,任何ASCII字符是否可能占用多个字节(可能需要检查字节长度)?
(编辑:根据我对问题的反馈,我看到varchar应该用于ASCII和nvarcharunicode.)