BUSINESSTABLE看起来像这样的时候:DB2 SQL获得不同价值的分组行
HOTEL_CHAIN HOTEL_LOCATION HOTEL_OWNER
_____________________________________________________
Marriott Las Vegas Nelson
Best Western New York Richards
Best Western San Francisco Smith
Marriott New York Nelson
Hilton Boston James
我想在DB2数据库组由HOTEL_CHAIN这些条目执行SQL语句。如果组合在一起的行包含相同的HOTEL_LOCATION或HOTEL_OWNER,则应保留该信息。否则,应显示“NULL”值。例如,两家万豪酒店都拥有相同的所有者纳尔逊,所以我想在新表格中显示这些信息。但是,每家万豪酒店都位于不同的位置,因此我想在该列中显示“NULL”。
结果表(HOTELTABLE)应该是这样的:
HOTEL_CHAIN HOTEL_LOCATION HOTEL_OWNER
_____________________________________________________
Marriott NULL Nelson
Best Western NULL NULL
Hilton Boston James
我尝试使用下面的SQL语句来实现:
INSERT INTO HOTELTABLE(HOTEL_CHAIN,HOTEL_LOCATION,HOTEL_OWNER)
SELECT
HOTEL_CHAIN,
CASE COUNT(DISTINCT(HOTEL_LOCATION)) WHEN 1 THEN HOTEL_LOCATION ELSE 'NULL' END,
CASE COUNT(DISTINCT(HOTEL_OWNER)) WHEN 1 THEN HOTEL_OWNER ELSE 'NULL' END,
FROM BUSINESSTABLE GROUP BY HOTEL_CHAIN
我得到一个SQL错误SQLCODE- 119具有条款的列或表达式无效。这似乎是在抱怨我的病例报告中的第二个HOTEL_LOCATION和第二个HOTEL_OWNER。我也尝试使用DISTINCT(HOTEL_LOCATION),并抛出了另一个错误。有人可以请解释正确的方式来编码吗?谢谢!