我试图根据列中的值将结果集中的列拆分为2列。 因此,用户可以订阅多个项目,用户可以拥有2个可以接收此订阅的电子邮件地址。 结果集给出订阅电子邮件ID的订阅及其相应条目的列表。SQL - 根据值拆分列
DB细节
Table 1 - user_subscriptions
user_id
email_id - 1 for email id 1 and 2 for email id 2
subscription_id
Table 2 - subscriptions
subscription_id
subscription_name
现在我需要无论是通过任一电子邮件ID或不认缴的该用户的所有预订。 所以我得到一个结果集是这样的
+----------------------+----------+
| subscription_name | email_id |
+----------------------+----------+
| item1 | 1 |
| item1 | 2 |
| item2 | null |
| item3 | 1 |
| item4 | null |
| item5 | 2 |
+----------------------+----------+
于是我找下面
+-------------------+---------+---------+
| subscription_name | email_1 | email_2 |
+-------------------+---------+---------+
| item1 | 1 or Y | 1 or Y |
| item2 | 0 or N | 0 |
| item3 | 1 | 0 |
| item4 | 0 | 0 |
| item5 | 0 | 1 |
+-------------------+---------+---------+
希望这个问题有意义分割上述结果集到类似。任何帮助,将不胜感激!
更新-----------
样本数据:
subscriptions - +-----------------+-------------------+ | subscription_id | subscription_name | +-----------------+-------------------+ | 1 | item1 | | 2 | item2 | | 3 | item3 | | 4 | item4 | | 5 | item5 | +-----------------+-------------------+
user_subscriptions
+---------+----------+-----------------+ | user_id | email_id | subscription_id | +---------+----------+-----------------+ | 101 | 1 | 1 | | 101 | 2 | 1 | | 101 | 1 | 3 | | 101 | 2 | 5 | | 102 | 1 | 1 | | 102 | 2 | 1 | +---------+----------+-----------------+
预期结果:
对于user_id = 101
+-----------------+-------------------+--------+--------+ | subscription_id | subscription_name | mail_1 | mail_2 | +-----------------+-------------------+--------+--------+ | 1 | item1 | Y | Y | | 2 | item2 | N | N | | 3 | item3 | Y | N | | 4 | item4 | N | N | | 5 | item5 | N | Y | +-----------------+-------------------+--------+--------+
什么意思'1或Y'和'0或N'在你想要的输出中? –
如果订阅的结果是1或Y.它只是我希望输出的格式。现在它可以是1,如果订阅,或者0,如果不订阅。 – Zuke
根据我的回答下面 - 我会检查这个:http://stackoverflow.com/a/8114446/817132 - 这可能会给你一个清晰的答案特别是sybase。 – wally