2012-02-06 91 views
1

我想在两个column_Acolumn_B以下两个选择查询结果A和B.我试图遵循逻辑,但它不能在SQL Server 2008 R2中工作SQL Server SELECT嵌套

select Column_A, Column_B 

From (

SQL query for A 

, 

SQL query for B 

) 

有人可以请验证我的逻辑是错误的还是正确的?

+2

欢迎使用StackOverflow:如果您发布代码,XML或数据样本,请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(“{}”)格式和语法突出显示它! – 2012-02-06 17:23:54

+3

查询A和查询B返回单个值还是一组值? – Akhil 2012-02-06 17:24:15

+0

有不同的方法来组合查询。请说明你想要达到的目标。你可以给出这些表包含的例子以及你期望的结果。 – 2012-02-06 17:35:25

回答

2

可以通过嵌套选择这样

SELECT A.Column, B.Column 
FROM 
    (SELECT Column FROM table1 ...) A 
    INNER JOIN 
    (SELECT Column FROM table2 ...) B 
    ON A.id = B.id 

此查询结合了另一个的行一个数据源(表或查询子)的行。如果您从多个数据源进行查询,您通常必须以某种方式加入它们。如果你不这样做,你会得到一个笛卡尔产品,它将每一行的每一行与另一行的每行相结合。

3

如果你只是想要一个标量结果做到这一点:

SELECT 
    (<sub-query for value A>) Column_A, 
    (<sub-query for value B>) Column_B 
; 

对于标量结果集,你需要确保,他们总是只返回一个值,否则查询将在运行时失败。

如果你真的想使用子查询你需要他们的名字:

SELECT Column_A, Column_B 
FROM (<sub-query A>) AS A, 
    (<sub-query B>) AS B 

...你会想无论是JOIN条件或WHERE条款正确连接表在一起。

+0

史诗般的胜利....你让我的一天!十分感谢。你第一次逻辑工作! – Satish 2012-02-06 18:14:21