我有一个产品表,其中两列的值可以暗示一个或两个实际产品结果。如果列 X = 1 AND Y = 0 返回一个结果,如果 X = 0 和 Y = 1 返回一个结果,如果 X = 1 AND Y = 1 则返回两个结果。
我想编写一个查询,该查询将根据上述规则为单行生成两行结果。这如何通过 SQL 查询来完成?UNION 是唯一的方法吗?
[根据评论编辑]
表:产品
ProductId | ABR | UBR
1 | 1 | 1
2 | 1 | 0
3 | 0 | 1
4 | 1 | 1
5 | 1 | 1
我想要一个 SELECT 语句,它将从此集合中生成 8 个结果。ABR 或 UBR = 1 的每个实例基本上都有一个结果。
所以我希望我的结果是:
ProductId | Edition
1 | ABR
1 | UBR
2 | ABR
3 | UBR
4 | ABR
4 | UBR
5 | ABR
5 | UBR
我知道我可以使用 UNION 来实现这一点,但我正在寻找更优雅的东西。
UNION
确实有道理。你可以把它
UNION
放在一个子查询中,它会整理一些:我认为你也可以这样做,
UNPIVOT
但对于这个简单的用例,aUNION
似乎最有效。我会使用
UNPIVOT
这个,除非abr
和ubr
都被索引并且相对较低的比例包含 value1
。(借用JNK的表变量)