Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择带有常量变量的查询_Sql_Sql Server - Fatal编程技术网

Sql 选择带有常量变量的查询

Sql 选择带有常量变量的查询,sql,sql-server,Sql,Sql Server,我需要选择一个表列值和一些常量变量。比如说, 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 谢谢你的建议。谢谢 您需要将常量值表示为一个结果集,然后您可以通过从两个结果集中进行选择来获得笛卡尔积。例如:

我需要选择一个表列值和一些常量变量。比如说,

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

谢谢你的建议。谢谢

您需要将常量值表示为一个结果集,然后您可以通过从两个结果集中进行选择来获得笛卡尔积。例如:

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
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作为结果列。

尝试以下方法:

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

它与vb.net有什么关系?另外,请解释SQL Server的版本。我们缺少一些信息…R表示什么?它们是某种索引吗?如果它只是一个变量,请以某种方式附加它。谢谢,哈姆雷特。这正是我想要的工作。有一个愉快的周末!谢谢,马克。这是预期的工作。非常感谢。有一个愉快的周末!