小编Mic*_*hal的帖子

T-SQL ORDER BY根据条件

我正在写一些资源管理系统.

资源是定义的实例.定义是元数据,基本上它包含属性.

这通常是我的DB:

TypeDefinition
id    name
===============
1     CPU


PropertyDefinition
id    name       typeDefinitionId   valueType
================================================
1     frequency  1                  int
2     status     1                  string


TypeInstance
id    name     typeDefinitionId
=================================
1     CPU#1    1  
2     CPU#2    1


PropertyInstanceValue
id   propertyDefinitionId  typeInstanceId   valueType   intValue  StringValue FloatValue
========================================================================================
1    1                     1                int         10
2    2                     1                string                Pending
3    1                     2                int         20
4    2                     2                string                Approved
Run Code Online (Sandbox Code Playgroud)

需求:

根据特定的属性值排序所有资源.

例如:根据状态排序所有资源- >含义CPU#2将出现在CPU#1之前,因为"已批准"在"待定"之前.

如果我们按照频率订购,CPU#1将出现在CPU#2之前,因为10在20之前.

所以我需要根据不同的列(intValue/stringValue/FloatValue/etc)对每次进行排序,具体取决于属性的valueType.

有什么建议吗?

局限性:

PIVOT目前是我们唯一想到的选择,但由于数据库很庞大,我不需要查询尽可能快.

非常感谢提前,

米哈尔.

sql t-sql database sql-server

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

标签 统计

database ×1

sql ×1

sql-server ×1

t-sql ×1