2013-10-19 47 views
2

我需要選擇一個表列值和一些常量變量。例如,用常量變量選擇查詢

SQL表:


Key KeyName 
------------- 
1 Normal 
2 Basic 
3 Super 

恆值是R1,R2,R3,R4。

輸出結果作爲單柱:


Normal R1 
Normal R2 
Normal R3 
Normal R4 
Basic R1 
Basic R2 
. 
. 
. 
Super R4 

欣賞任何建議。謝謝。

+1

它是如何與'vb.net'有關?另外,解釋SQL Server的版本。 –

+0

我們錯過了一些信息...「R#」意味着它們是什麼類型的索引?如果它只是一些變量,以某種方式追加它。 – Plutonix

回答

2

試試這個:

SELECT 
    T.KeyName, 
    TT.ConstValues 
FROM Tbl T 
    CROSS JOIN 
    (VALUES ('R1'), ('R2'), ('R3'), ('R4')) TT(ConstValues) 

SQL FIDDLE DEMO

+0

謝謝,哈姆雷特。這正是我想要的。週末愉快! – Amy

0
SELECT KeyName, Value = CASE WHEN [number] = 1 THEN 'R1' 
          WHEN [number] = 2 THEN 'R2' 
          WHEN [number] = 3 THEN 'R3' 
          WHEN [number] = 4 THEN 'R4' 
          ELSE '' 
         END 
FROM (SELECT KeyName, ROW_NUMBER OVER (PARTITION BY KeyName 
             ORDER BY KeyName) AS [number] 
     FROM MyTable) A 
1

您需要將常數值表示爲結果集,然後通過從中選擇兩個值來獲得笛卡爾乘積。例如:

WITH ConstantValues AS 
(
    SELECT 'R1' AS ConstantValue 
    UNION ALL 
    SELECT 'R2' 
    UNION ALL 
    SELECT 'R3' 
    UNION ALL 
    SELECT 'R4' 
) 

SELECT t.KeyName, c.ConstantValue 
FROM SqlTable t, ConstantValues c; 

如果你想每對要表示成一個結果,那麼你可以使用SELECT t.KeyName + ' ' + c.ConstantValue AS ResultColumn代替。

+0

謝謝,馬克。它按預期工作。非常感謝。週末愉快! – Amy