【发布时间】:2013-08-02 18:42:08
【问题描述】:
想要这样做的原因是,我需要以四种不同的方式按数据集分组,但仍需要将它们作为一个结果集返回。
例如。
我真的想不出一个实际的例子,但在我正在做的例子中它是必要的。想象一下,如果我返回的是水果、蔬菜、总统和运动,但我想将所有内容分组
水果同名 蔬菜的颜色 各党派总统和 他们所在城市的体育运动。 (好吧,我告诉过你我有一个不好的例子)
无论如何,我希望做的是 GROUP BY,我称之为“子类”。为了做到这一点,“子类”将查看“规则类”来确定它应该返回什么代码。这甚至可能吗?和这个类似的东西……
UPDATE #FakeTable
SET SubClass = CASE WHEN RuleClass = 'Fruit' THEN H.NAME
WHEN RuleClass = 'Vegetables' THEN H.COLOR
WHEN RuleClass = 'President' THEN H.PARTY
ELSE H.City
END
FROM #Holdings H
WHERE #FakeTable.SubClass = NULL
因此,此列本质上会从不同临时表中的另一列中提取,具体取决于前列中的内容..
【问题讨论】:
-
为什么子类需要一个单独的表?您是否将“类”存储在主表中?
-
我想不一定。我想更好的问题是我可以让一列根据它旁边的列拉回不同的数据。也就是说,如果 RuleClass 是 A 那么 SubClass 会寻找 ThisColumn 如果 RuleClass 是 B 然后 SubClass 会寻找 ThatColumn 等等...
标签: sql sql-server sql-server-2008 sql-update case