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),並拋出了另一個錯誤。有人可以請解釋正確的方式來編碼嗎?謝謝!