[MS SQL] 兩個資料表的所有交叉組合

假設我有兩個表

TableA

想去哪裡?
-------------
台 北
高 雄


TableB

怎麼去?
--------------
開 車
搭高鐵
搭火車



想要的結果:

Table_Result

想去哪裡? |怎麼去?
-------------   ------------
台 北            開 車
台 北            搭高鐵
台 北            搭火車
高 雄            開 車
高 雄            搭高鐵
高 雄            搭火車

直接看SQL:

--建立@TableA並給它值
DECLARE @TableA TABLE ([想去哪裡?] nvarchar(12));
INSERT INTO @TableA SELECT '台 北' UNION SELECT '高 雄';

--建立@TableB並給它值
DECLARE @TableB TABLE ([怎麼去?] nvarchar(12));
INSERT INTO @TableB SELECT '開 車' UNION SELECT '搭高鐵' UNION SELECT '搭火車';

SELECT * FROM @TableA;
SELECT * FROM @TableB;

--兩個表的所有交叉組合結果
SELECT * FROM
(SELECT [想去哪裡?] FROM @TableA) A,
(SELECT [怎麼去?] FROM @TableB) B
ORDER BY 1

留言

這個網誌中的熱門文章

[MS SQL] 使用PIVOT 做兩個欄位的交叉分析(動態欄位)

[ASP.NET] Gridview動態增加欄位與Null值處理

[MS SQL] 將輸入的時間(分、秒)轉換成中文時間的函數