【发布时间】:2014-06-27 08:44:48
【问题描述】:
我有一个客户表和一个地址表。
地址表有一个标志,它是 INVOICE、CORRESPONDENCE 或 DELIVERY。
一个客户可以有 0 到多个地址记录。
我希望能够查询这两个表并根据地址数据为每个客户生成一个标志 - 没有地址记录 = NONE,1 个或多个 INVOICE 记录 = HASINVOICE,没有 INVOICE 但有 1 个或多个其他 = HASOTHER
所以,对于以下数据:
+------------+---------+
| CustomerID | Name |
+------------+---------+
| 1 | Peter |
| 2 | Ray |
| 3 | Egon |
| 4 | Winston |
| 5 | Dana |
+------------+---------+
+-----------+------------+----------------+
| AddressID | CustomerID | AddressType |
+-----------+------------+----------------+
| 1 | 1 | INVOICE |
| 2 | 1 | DELIVERY |
| 3 | 2 | DELIVERY |
| 4 | 2 | CORRESPONDENCE |
| 5 | 4 | INVOICE |
| 6 | 5 | CORRESPONDENCE |
+-----------+------------+----------------+
我希望得到以下输出:
+------------+---------+-------------+
| CustomerID | Name | AddressFlag |
+------------+---------+-------------+
| 1 | Peter | HASINVOICE |
| 2 | Ray | HASOTHER |
| 3 | Egon | NONE |
| 4 | Winston | HASINVOICE |
| 5 | Dana | HASOTHER |
+------------+---------+-------------+
对于 SQL 2000,这是否可能,使用单个查询而不使用游标?
【问题讨论】:
标签: sql sql-server tsql sql-server-2000