我在MS SQL Server中有一个复杂的SQL问题,并且在绘制一张纸时,我意识到我可以将其视为一个填充矩形的单条,每个矩形都有段具有不同的Z指令。实际上,它与z顺序或图形完全无关,但更多的是与一些难以解释的复杂业务规则相关。不管怎样,如果有人对如何解决下面的问题有想法,那会给我解决方案。复杂的SQL查询类似于AZ订单问题
,我有以下数据:
ObjectID | PercentOfBar | ZOrder (where smaller is closer)
---------------------------------------------------------------
A | 100 | 6
B | 50 | 5
B | 50 | 4
C | 30 | 3
C | 70 | 6
,我想是这样的,以任何顺序我查询的结果:
PercentOfBar | ZOrder
-------------------------
50 | 5
20 | 4
30 | 3
认为它是这样的,如果我画矩形A ,它会填满100%的酒吧,并有AZ的顺序6.
6666666666
AAAAAAAAAA
如果我然后奠定了长方形B,由两个s egments,这两个领域将掩盖矩形A导致以下渲染:
4444455555
BBBBBBBBBB
作为一个经验法则,对于给定的矩形,这是段应奠定了这样的最高Z顺序是正确的低Z指令。
最后,矩形C只会掩盖矩形B的一部分,它的30%分段是z阶3,它将在左边。你可以希望看到的是在输出数据集我上面列出表示:
3334455555
CCCBBBBBBB
现在使事情变得更加复杂我其实有4列,使得该组出现的每个关键:
输入:
SomeKey, ObjectID, PercentOfBar, ZOrder (where smaller is closer)
X, A, 100, 6
X, B, 50, 5
X, B, 50, 4
X, C, 30, 3
X, C, 70, 6
Y, A, 100, 6
Z, B, 50, 2
Z, B, 50, 6
Z, C, 100, 5
输出:在输出中,吨
SomeKey, PercentOfBar, ZOrder
X, 50, 5
X, 20, 4
X, 30, 3
Y, 100, 6
Z, 50, 2
Z, 50, 5
通知每个SomeKey的PercentOfBar会加起来达到100%。
这是一个我知道我会考虑什么时候我今晚睡觉的时候。
只要是明确的,有一个问题:
什么是会产生上述结果的查询?
AaronLS,请查看我的修订,以您的题。我从6行和A行中删除了“6”和“A”,所以现在每行有10行。这是你的意图吗?如果不是,请将其回滚(或更正)。 – devuxer 2010-04-01 00:59:52
Is(SomeKey,ObjectID,ZOrder)是否唯一?如果没有,你的桌子上是否有PK或其他独特的索引? – 2010-04-01 10:29:08
@DanM Perfect Thanks – AaronLS 2010-04-01 19:36:20