我想選擇兩個綁定到表的值,如果它們不存在,則填充空值。但是,我只希望每條記錄都有一行。如果我運行下面的查詢,CASE語句會創建重複的行。SQL在存在時選擇一個值,否則多次填充空值
SELECT DISTINCT YT.TITLE, YT.DETAILS,
CASE WHEN XT.ACOLUMN = 'CATEGORY' THEN XT.BCOLUMN END AS CATEGORY,
CASE WHEN XT.ACOLUMN = 'DIVISION' THEN XT.BCOLUMN END AS DIVISION
FROM DB.YTABLE YT
LEFT OUTER JOIN DB.XTABLE XT
ON YT.ID_NUM = XT.ID_NUM
數據我想:
TitleExample1,DetailsExample1,組別,Division1
TitleExample2,DetailsExample2,空,Division2
數據我得到:
TitleExample1,DetailsExample1,組別,空
TitleExample1,DetailsExample1,空,Division1
TitleExample1,DetailsExample1,NULL,NULL
TitleExample2,DetailsExample2,空,Division2
TitleExample2 ,DetailsExample2,null,null
我也試圖做一個連接使用多個表身份爲同一個表:
SELECT DISTINCT YT.TITLE, YT.DETAILS, XT1.BCOLUMN AS CATEGORY1,
XT2.BCOLUMN AS DIVISION
LEFT OUTER JOIN DB.XTABLE XT1
ON YT.ID_NUM = XT.ID_NUM
LEFT OUTER JOIN DB.XTABLE XT2
ON YT.ID_NUM = XT.ID_NUM
WHERE XT1.ACOLUMN = 'CATEGORY' AND
XT2.ACOLUMN = 'DIVISION'
這種運作良好,如果填充兩個類別和分裂值。但是,如果標題和詳細信息記錄沒有關聯的類別或部門,則查詢將不會選擇該記錄。
數據我想:
TitleExample1,DetailsExample1,組別,Division1
TitleExample2,DetailsExample2,空,Division2
數據我得到:
TitleExample1,DetailsExample1,組別,Division1
如果您發佈將是有益的如果你的表格中包含3行,那是因爲你至少有3行符合你的XTABLE。此外,由於XT.ACOLUMN不能同時等於CATEGORY和DIVISION – Nagasaki 2013-05-03 14:32:29