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

感谢任何建议。谢谢。

4

3 回答 3

2

尝试这个:

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

SQL 小提琴演示

于 2013-10-19T15:38:02.837 回答
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改用。

于 2013-10-19T15:36:46.180 回答
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
于 2013-10-19T15:35:58.493 回答