![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
#3
| |||
| |||
|
|
SELECT x1, x2, X.x3 |
|
( SELECT ... FROM ... WHERE ... UNION SELECT ... FROM ... WHERE ...) as X.x3 |
#4
| |||
| |||
|
|
Is this a valid query? I mean if the UNION of the two SELECT statements returns more than a single value then you will get an error (at least on SQL Server). |
|
SELECT x1, x2, X.x3 FROM ... , ( SELECT ... FROM ... WHERE ... UNION SELECT ... FROM ... WHERE ...) as X.x3 |
#5
| |||
| |||
|
|
SELECT x1, x2, X.x3 FROM ... , ( SELECT ... FROM ... WHERE ... UNION SELECT ... FROM ... WHERE ...) as X.x3 WHERE Y.a = X.a |
#6
| |||
| |||
|
#7
| |||
| |||
|
|
SELECT x, y FROM Foo AS F * CROSS APPLY (SELECT y FROM Bar AS B1 WHERE B1.x = F.x * * * * * * * * * * * UNION * * * * * * * * * * * SELECT y FROM Bar AS B2 WHERE B2.x = F.x) AS B WHERE y IS NOT NULL; |
#8
| |||
| |||
|
|
SELECT x, y FROM Foo AS F CROSS APPLY (SELECT y FROM Bar AS B1 WHERE B1.x = F.x UNION SELECT y FROM Bar AS B2 WHERE B2.x = F.x) AS B WHERE y IS NOT NULL; Yeah, that's it ! But I'm under SQL Server 2000.... I think I'll keep the first solution. S. Rielau : the problem is the "WHERE B1.x=F.x". If I write SELECT X FROM F, (SELECT ... FROM B1 WHERE B1.x=F.x) AS F1 SQL Server doesn't recognize F.x. That's not what I wrote. |
#9
| |||
| |||
|
|
S. Rielau : the problem is the "WHERE B1.x=F.x". If I write SELECT X FROM F, (SELECT ... FROM B1 WHERE B1.x=F.x) AS F1 SQL Server doesn't recognize F.x. That's not what I wrote. You can put the WHERE on the outer SELECT. Let me qualify: |
#10
| |||
| |||
|
![]() |
| Thread Tools | |
| Display Modes | |
| |