我試圖根據列中的值將結果集中的列拆分爲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