SQL Union / Intersection

Jul 23, 2005

I'm trying to build dynamic sql from a string passed by a calling
application. Let's assume for this discussion that the user can pass a
string of letters with these logical operators ("and", "or", and "and
not") seperating them. Each letter can be rebuilt into a sub query
that will search for people in a table by their middle initial. For
example,

X and Y

(select SSN from tblPerson where MiddleInitial = 'X') UNION
(select SSN from tblPerson where MiddleInitial = 'Y')

This seems pretty easy with the and operator (UNION) but how can I do
"or" and "and not"? I remember from a SQL class I had 10 years ago
that there was an INTERSECTION operator but it appears that T-SQL
doesn't support it. The closest option is EXIST and NOT EXIST but
these can not be simply inserted between two sub queries (I think),
they require the user of a where clause. It would obviously work in
the example above but in the more complecated example below it wouldn't
be an easy replacement of the operators and sub queries.

X and (Y or J) and not L

So, the bottom line is that I have no problem replacing the letters
with the appropriate sub query but I'm looking for a way to replace the
logical operator with SQL syntax that will mimic the logical operator.


I hope this makes sense. : )

Will Wirtz

View 7 Replies


ADVERTISEMENT

Intersection

Aug 9, 2006

Parwej writes "i have one table, fields are

cs_call_id , fromid , toid , body
----------------------------------
101 1 2 fg
101 3 2 df
101 4 2 fd
101 4 1 dfd
101 3 1 w3e

i would like to find

conversation between
2,3,4

means find the row or 2,3,4 (fromid or toid)"

View 2 Replies View Related

Within Table Intersection

Jun 3, 2008

Hello all,
I'm new to SQL and my Teach Yourself in Blah Blah Blah book doesn't index anything helpful to my task. I have a single
TABLE ratings (rid INTEGER PRIMARY KEY, mvid INTEGER, uid INTEGER, rating INTEGER)
with about 100,000,000 rows. I would ultimately like to be able to select rows that are the intersection of two mvid on uid or vice versa -- that is, all rows whose uid is present in the set of rows where mvid=a AND in the set where mvid=b (or vice versa). Something like:
ridmviduidrating
----------------------
1123763
2123314
3123442
4211652
5211764
6211445
7535933
8535762

SELECT * FROM ratings INTO @temp_table WHERE mvid=123
SELECT * FROM ratings WHERE uid IN @temp_table AND mvid=211returns
5211764
6211445

FIRST, I don't know how to accomplish this intersection at all and the only idea I've had is querying the first clause of the intersection and storing it in a temporary/variable table then selecting from that and the original table for the second clause (not that I know how to do this), but I'm afraid this will be very inefficient for the >O(n^2) queries I must perform, so SECOND, should I build derived intersection tables from the results so as to have ~O(1) when repeating the queries later, or will SQL be doing sufficient behind-the-scenes magic? Is there an efficient SQL statement that could generate table(s) of the set of intersections if necessary? Thanks

View 20 Replies View Related

Deadlock With Index Intersection

Nov 8, 2002

Hi,

I have a deadlock situation with index intersection.

Connection1:

Updates a table T1 which has indexes I1 and I2

Connection2:

Selects from T1 (joining many other tables), SQL Server uses index intersection of I1 and I2.

The deadlock error log shows,

Connection1 has exclusive lock on I1 and waits on exclusive lock request on I2

Connection2 has a shared lock on I2 and waits on shared lock request on I1

Connection2 is selected as the deadlock victim.

The transaction isolation level is explicitly set to READ COMMITTED in ADO connection object.

I don't understand why SQL server needs to hold on the shared lock on I1 while waiting for a shared lock on I2.

Is there any index hint to prohibit SQL server from using index intersection other than explictly using INDEX=I1 or I2.


Thanks

View 3 Replies View Related

Intersection On A Single Table

Nov 12, 2004

Hi all !

I have a table with no keys (temp table) which looks like this :
col1|col2|col3
001|A|.087
001|B|.032
001|C|.345
002|A|.324
002|B|.724
003|A|.088
003|C|.899
001|A|.087
001|A|.234
001|B|.032

As you see, there is some duplicate entries in it. I would like to get a list of all the rows that have the same col1 and col2 BUT different col3 value. The result should return col1=001 col2=A but NOT col1=001 col2=B. I tried a lot of queries with EXISTS, HAVING, etc... but nothing seems to work.

Anyone have an idea how I can do it ?

View 7 Replies View Related

Difference Between Inner Join And Intersection

Aug 14, 2006

Hi Can anybody explain me what is the difference between inner join and intersection?

I prepare a query but it shows the same results then why we need two functions like this to perform same operation

Thanx-Nagu

View 4 Replies View Related

Is It Possible To Use A Where Clause In Select Statments When You Use Intersection?

Apr 26, 2008


Lets say that Dealers have ZipCodes, and that a Dealer can have more than one zipCode, and we want the list of dealers that have both 90210 and 90211 zip codes. BUT we don't want any dealers that have only one of the two ZipCodes in question

What I want to do is something like this

Select DealerID from DealerZips where Zip = '90210'
intersection
Select DealerID from DealerZips where Zip = '90211'

but I get this error msg:
Line 2: Incorrect syntax near 'intersection'




The following sql is silly, but it does run without error
Select DealerID from DealerZips
intersection
Select DealerID from DealerZips

So I am pretty sure my problem is with the Where clauses.

help!

View 3 Replies View Related

T-SQL (SS2K8) :: Split Timedate Range At Intersection

Apr 17, 2014

Using SQL Server 2008 R2

I'm trying to create a report and chart for a a manufacturing resource's activity for a given period (typically 30-90 days)

Jobs are created for the length of the run (e.g. 4 days). If the weekend is not worked and the above jobs starts on a Friday, the resource's activity needs to show 1 day running, 2 days down, 3 days running without the production scheduler having to make it two jobs. (A job can have multiple interruptions due to downtime). I have the jobs' schedules in one table and the downtimes in another (so think of the downtime as a calendar table--non working hours). Unusually, the end time is supplied with the downtime factored in.

So I need the query to create 3 datetime ranges for this job: Fri running, Sat,Sun down, Mon,Tues,Wed Running. Been going round in circles on this for a while. i'm sure there's an elegant way to do it: I just can't find it. I've found several similar post, but can't apply any to my case (or at least can;t get them to work)

Below is some sample date and expected results. I hope the explanation and example data is clear.

-- Create tables to work with / Source and Destination
CREATE TABLE #Jobs
(
ResourceID int
,JobNo VARCHAR(10)
,startdate SMALLDATETIME
,enddate SMALLDATETIME

[Code] ....

Below is some sample data

|--------------------------J1------------------------------------| running
|----D1-----| |-------D2-------| down
|--J1--|----D1-----|-------J1------|-------D2-------|-----J1-----| result

|-----------------J1-----------------------| running
|----D1-------| down
|-----------------J1-----------------------| |----D1-------| result

View 4 Replies View Related

Analysis :: Filter Measure On Intersection Of Dimensions

Jul 24, 2015

SSAS 2008 R2

Is it possible to filter out a measure only at the intersection of Two dimension members? I have a date dimension,  a Hospital dimension and a wait time measure.

For Example, is it possible to filter out Wait time for Bayside Hospital for the Month of June 2015?

I want Wait time to continue to be displayed for all other months and roll up into the totals without the filtered value.

View 4 Replies View Related

T-SQL (SS2K8) :: Using Union ALL Or Union Kills Performance On Stored Proc

Jun 12, 2014

SQL Server 2008 r2...

I have a query which does 3 selects and Union ALLs each to get a final result set. The performance is unacceptable - takes around a minute to run. If I remove the Union All so that the result sets are returned individually it returns all 3 from the query in around 6 seconds (acceptable performance).

Any way to join the result sets together without using Union All.

Each result set has exactly the same structure returned...

Query below [for reference]...

WITH cte AS (
SELECT A.[PoleID], ISNULL(B.[IsSpanClear], 0) AS [IsSpanClear], B.[SurveyDate], ROW_NUMBER() OVER (PARTITION BY A.[PoleID] ORDER BY B.[SurveyDate] DESC) rownum
FROM[UT_Pole] A
LEFT OUTER JOIN [UT_Surveyed_Pole] B ON A.[PoleID] = B.[PoleID]

[Code] .....

View 4 Replies View Related

Multiple Text Values In Intersection Cells Of Matrix Report

May 30, 2007

I'd like to create a report with the folloiwng format:



DATE1 DATE2 DATE3 DATE4 DATE5 [fixed 5 dates across the top, from today to T+5]

THING1 x x x x

THING2 x x x x

THING3 x x x x

THING4 x x x x



my raw data looks like this:



THING1, DATE1, TEXT VALUE 1

THING1, DATE2, TEXT VALUE 2

&c&c.



Now: there may be 0, 1 or several (by which I mean 2-5 max) text values to display at each intersection. If there are zero I'd like it to be blank, if there are one or several, i'd like to display them in a little list within the cell.



Is this possible?

View 1 Replies View Related

How Does Union/union All Work Inside SQL Server?

Apr 29, 2008



Why the sequence different?



select * from (

select id=3,[name]='Z'

union all select 1,'G'

union all select 2,'R'

union all select 4,'Z'

) as t

order by [name]

--result:

---------

--1 G

--2 R

--4 Z

--3 Z

select * from (

select id=3,[name]='Z'

union select 1,'G'

union all select 2,'R'

union all select 4,'Z'

) as t

order by [name]

--result:

----------

--1 G

--2 R

--3 Z--changed

--4 Z

View 3 Replies View Related

Union All Does Not Union All Rows

Nov 6, 2006

Hi all,

I have a Union All transformation with 4 inputs and one output when I debug the package the sum of the different inputs rows does not match the row count in output.

I don't understand, I've used the Union All transform many times and I've never seen this.

Any idea why this could happen ?

View 18 Replies View Related

DTS - UNION

Jan 23, 2001

Hi,

I am using DTS to import data where the query involves the UNION .

Select a,z,y from x
UNION
select b,z,y from y;

Only the columns Z,y appearing in the output. Is there any known problem with UNION in DTS?

Thanks

View 3 Replies View Related

Union -- Union All

Dec 3, 2004

Help me again . :) ..
Query :

Select 1 AS ColA, ColB,ColC
FROM Table1
Where ColA = 1
Union
Select 2 AS ColA, ColB,ColC
FROM Table1
Where ColA = 2

Expected Result.
ColA ColB ColC
1 Apple Sweet
1 Wine Alcohol
2 Home Nice
2 Travel Fun

But gives
ColA ColB ColC
1 Apple Sweet
1 Wine Alcohol
1 Home Nice
1 Travel Fun

any suggestions .please reply.

View 1 Replies View Related

Union In MDX

Mar 23, 2007

Could someone explain me Union function in MDX? How is different from the T-SQL Union?

My need is urgent.

View 1 Replies View Related

Union

Jul 12, 2004

i have a table with country names

table name:country
column name:country
it is populated with:
UK
USA
africa
asia
japan

i want a query which gives the foll output
USA
UK
africa
asia
japan


(i.e) USA and UK must be on the top 2 rows
while the rest of the countries should come below these 2 and sorted in the ascending order.

if it is possible with any other query also it is ok

View 1 Replies View Related

Use TOP With UNION

Jul 14, 2004

Hi

I just found out that I can do an ORDER BY clause on entire records set retrieve from a query that combines several sub queries with UNION from different tables with the same structure... so this is great to know, BTW, is this a new feature of MSSQL 2K ? I don't recall being able to do this in MSSQL 7 or 6.5.

Anyway, the main question is, can I use the TOP command in a query that has UNION in it?? Meaning, there are two queries (or more) from two tables (or more) and I need to fetch the top 10 records by an ORDER BY clause from the combined results, when I try to add each sub query TOP 10 the results are not correct at all, when I try to add TOP 10 only to the first query hoping that the analyzer will refer to the whole query, it's selecting TOP 10 from the first query and combines it with all the records from the others...

So, can anyone help? I hope the problem is understood.

Thank you,
Inon.

View 2 Replies View Related

Need Help With UNION And SUM

Nov 8, 2004

Hi!

I am trying to join to different queries into one table ( I accomplished this)

Next I need to ADD or SUM the results of 2 rows to form a single row.

As you can see in the query below, I run 2 separate queries and use ' ' as a place holder for the UNION to work. I get duplicate rows, one with a value and the other with a '0'. I want to have a single row.

Any help is greatly appreciated!

(SELECT
v_gs_supportedpackages.ProdID0 as 'Product Name',
v_RA_System_SMSInstalledSites.SMS_Installed_Sites0 as 'Site',
Count(ProdID0) as '# copies installed',
'' as '# legitimate copies installed'

FROM
v_R_System SYS,
v_GS_Workstation_Status HWSCAN,
v_gs_SupportedPackages
inner join
v_RA_System_SMSInstalledSites on v_RA_System_SMSInstalledSites.ResourceID = v_gs_SupportedPackages.ResourceID

WHERE
SYS.ResourceId = HWSCAN.ResourceId
AND
SYS.ResourceId = v_gs_SupportedPackages.ResourceId
AND
v_gs_supportedpackages.ProdID0 = substring('MS Security Patch MS04-030,031,032,034,037,038',1,60)

GROUP BY

v_gs_supportedpackages.ProdID0,
v_RA_System_SMSInstalledSites.SMS_Installed_Sites0 )

UNION

(SELECT
v_gs_supportedpackages.ProdID0 as 'Product Name',
v_RA_System_SMSInstalledSites.SMS_Installed_Sites0 as 'Site',
'' as '# copies installed',
Count(ProdID0) as '# legitimate copies installed'

FROM
v_R_System SYS,
v_GS_Workstation_Status HWSCAN,
v_gs_SupportedPackages
inner join
v_RA_System_SMSInstalledSites on v_RA_System_SMSInstalledSites.ResourceID = v_gs_SupportedPackages.ResourceID

WHERE
SYS.ResourceId = HWSCAN.ResourceId
AND
SYS.ResourceId = v_gs_SupportedPackages.ResourceId
AND
v_gs_supportedpackages.ProdID0 = substring('MS Security Patch MS04-030,031,032,034,037,038',1,60)
AND
DateDiff(Day,HWSCAN.LastHWScan,GetDate()) <= '20'

GROUP BY

v_gs_supportedpackages.ProdID0,
v_RA_System_SMSInstalledSites.SMS_Installed_Sites0 )

View 4 Replies View Related

UNION Vs UNION ALL

Dec 15, 2006

Just a pet peeve....

From BOL:


By default, the UNION operator removes duplicate rows from the result set.
If you use ALL, all rows are included in the results and duplicates are not
removed.



Why is it assumed that one would want the duplicates removed by default?
Isn't that what SELECT DISINCT is for?

View 1 Replies View Related

Union

Mar 18, 2004

I was wondering if there is a way I could write this query as one query using union instead of 3 different queries?

SELECT columna as column,count(ID) as Applications
FROM tablea
GROUP columna


SELECT columna as column2, count(ID) as Approved
FROM tablesa where substring(APP_DATE,1,6) >'200304' and in 'Approved')
GROUP BY columna

SELECT columna as column3, count(ID) as Booked, sum(AMT) as amt, sum(AMT)/count(ID) as lavg
from tablea where substring(APP_DATE,1,6) >'200304' and STATUS in('book')
group by columna

View 2 Replies View Related

UNION Vs UNION ALL

Apr 22, 2008

Hi All,

I am doing a UNION of 8 views(with 3 million rows in each view approx). I am sure that there is NO DUPLICATE data between the views. SO specifying a UNION ALL would be better than specifying a UNION in this case?

Thanks!

Prakash.P
The secret to creativity is knowing how to hide your sources!

View 8 Replies View Related

Union

Jun 20, 2008

Hi folks,
I have a question about the performance of the following query:

(SELECT name, lastName
from Data
where salary >= 2200
)
union

(SELECT name, lastName
from Data
where salary >= 2200
) union

(SELECT name, lastName
from Data
where salary >= 2200
)

How that query works? Is it slow for a larger data? Does it do 3 queries and then combine them?

Thank you.

View 3 Replies View Related

Union

Feb 11, 2008

Hi All
I want to do the following report and I want the 2nd select statement to appear at the bottom to display the totals


SELECT Item,B.Mar, B.Apr, B.May, B.Jun,B.Jul, B.Aug, B.Sep, B.Oct, B.Nov, B.Dec, B.Jan
FROM fncWineSales(2007) AS A
UNION
SELECT 'Total',SUM(B.Mar), SUM(B.Apr), SUM(B.May), SUM(B.Jun),SUM(B.Jul), SUM(B.Aug), SUM(B.Sep), SUM(B.Oct), SUM(B.Nov), SUM(B.Dec), SUM(B.Jan)
FROM dbo.fncWineSales (2007) AS B


thanx in advance

View 11 Replies View Related

Other Than UNION

Jul 23, 2005

Hello,Bear with me (not had much sleep last night), pls see following ddl,dml and comments for what is desired, I don't have a problem gettingdesired result(s), however, I'm wondering if there's another (better)solution than UNION operator in this case. TIA.-- DDLCREATE TABLE #TMP (col varchar(10));-- DMLinsert into #TMPvalues('A124');insert into #TMPvalues('A127');insert into #TMPvalues('A12728');insert into #TMPvalues('A17282');insert into #TMPvalues('BCD');insert into #TMPvalues('BCD');insert into #TMPvalues('CDSS');insert into #TMPvalues('DS');insert into #TMPvalues('YUUEI');-- goal: get one row with col data starting with 'A' and distict rowsfor the restselect top 1 colfrom #TMPwhere col LIKE 'A%'UNIONselect distinct colfrom #TMPwhere col NOT LIKE 'A%'

View 4 Replies View Related

Sum A Union

Jul 20, 2005

Hi,I can return results of a union easily enough, but I wish to sum the recordsfirst. Is this possible in a single SQL statement? Or do I have to useseparate ones to sum up after the union?Cheers,Chris

View 2 Replies View Related

T-SQL UNION With Sum

Aug 20, 2007

Why if run this script, Always Incorrect syntax near the keyword 'group'.
somebody helpme, how to sum the union script

SELECT NUMMSTR3, sum(qty), sum (AP)
FROM (

SELECT c.NUMMSTR3, count(*) qty,sum(a.DEBIT) DEBIT,sum(a.CRDT) CRDT,Sum(a.CRDT - a.DEBIT) AP

FROM MSTR1 a,MSTR2 b,MSTR3 c

where a.IDMSTR1 = b.IDMSTR1

and a.KDMSTR1 = c.KDMSTR3

and c.NUMMSTR3 = '21010100'

and year(b.TRXDATE) <= '2007'

group by c.NUMMSTR3
UNION ALL

SELECT c.NUMMSTR3, count(*) jml,sum(a.DEBIT) DEBIT,sum(a.CRDT) CRDT,Sum(a.CRDT - a.DEBIT) AP

FROM HISTR4 d,MSTR3 c

where d.KDHISTR4 = c.KDMSTR3

and c.NUMMSTR3 = '21010100'

group by c.NUMMSTR3
) group by NUMMSTR3

View 5 Replies View Related

UNION

Jul 5, 2006

Of the two queries below, the first returns the desired result, the union of the select-except statments.  Why doesn't the second query return the same result as the first? Is this a mistake/bug on Microsofts side?

 

select * from

(select * from TEST1

EXCEPT

select * from TEST2) AS A

UNION

select * from (select * from TEST2

EXCEPT

select * from TEST1) AS B

 

 

 

select * from TEST1

EXCEPT

select * from TEST2

UNION

select * from TEST2

EXCEPT

select * from TEST1

View 3 Replies View Related

Union All

Sep 3, 2006

When any changes have been made to the underlying table structure, the Union all reports error and does not automatically correct the error. I then have to delete it and recreate it. Is this a bug?

View 3 Replies View Related

How To Union With SUM

Apr 22, 2008

hi need help
i have tow tables
no primary key
evry table only one ROW

tb1

fld1 fld2 fld3 fld4 fld5 fld6
---------------------------------------

2 4 5 6 7 8

tb2

fld1 fld2 fld3 fld4 fld5 fld6
---------------------------------------
6 1 2 4 1 9


i need to summing the tow table like this (evry table only one ROW)


view_SUM (summing)

fld1 fld2 fld3 fld4 fld5 fld6
---------------------------------------
8 5 7 10 8 17


how to do

select * from tb1

union all --------------SUM ?
select * from tb2
TNX

View 1 Replies View Related

Help With UNION

Feb 27, 2008

Hello all can anybody help me out with this one?

These are the errors that I am getting. The 2nd error only comes up when I try to put in "UNION". Any help would be very much appreciated. Thank you!

Msg 156, Level 15, State 1, Procedure searchUser, Line 79
Incorrect syntax near the keyword 'UNION'.

Msg 102, Level 15, State 1, Procedure searchUser, Line 100
Incorrect syntax near 'END'.





Code Snippet

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[searchUser]
-- Add the parameters for the stored procedure here

@Username VARCHAR(25),
@AppID INT,
@ResID INT,
@Access VARCHAR(5),
@Region INT
AS
BEGIN

IF @Username IS NULL
BEGIN

IF @Access IS NULL
BEGIN
PRINT 1
SELECT a.XID, a.AppID, a.ResID,
b.AppDescription,
c.ResDescription,
d.Username, d.Custom, d.Region

FROM [Application] a INNER JOIN ApplicationName b
ON a.AppID = b.AppID LEFT JOIN ResTable c
ON a.ResID = c.ResID LEFT JOIN AppResCustom d
ON a.XID = d.XID

WHERE a.AppID = @AppID
AND a.ResID = @ResID
END

ELSE
BEGIN
PRINT 2
SELECT a.XID, a.AppID, a.ResID,
b.AppDescription,
c.ResDescription,
d.Username, d.Custom, d.Region

FROM [Application] a INNER JOIN ApplicationName b
ON a.AppID = b.AppID LEFT JOIN ResTable c
ON a.ResID = c.ResID LEFT JOIN AppResCustom d
ON a.XID = d.XID

WHERE a.AppID = @AppID
AND a.ResID = @ResID
AND d.Custom = @Access
END

END

ELSE
BEGIN
PRINT 3
SELECT a.XID, a.AppID, a.ResID,
b.AppDescription,
c.ResDescription,
d.Username, d.Custom, d.Region

FROM [Application] a INNER JOIN ApplicationName b
ON a.AppID = b.AppID LEFT JOIN ResTable c
ON a.ResID = c.ResID LEFT JOIN AppResCustom d
ON a.XID = d.XID

WHERE d.Username = @Username
AND a.AppID = @AppID
AND a.ResID = @ResID
AND d.Custom = @Access

END

UNION

PRINT 4
SELECT a.XID, a.AppID, a.ResID,
b.AppDescription,
c.ResDescription,
d.Username, d.Custom, d.Region

FROM [Application] a INNER JOIN ApplicationName b
ON a.AppID = b.AppID LEFT JOIN ResTable c
ON a.ResID = c.ResID LEFT JOIN AppResCustom d
ON a.XID = d.XID

WHERE d.Username = @Username
AND a.AppID = @AppID
AND a.ResID = @ResID
AND d.Custom = @Access
AND d.Region = @Region

END

View 4 Replies View Related

Top 5 With Union.

Jun 1, 2006

I want to know the top 5 patterns in sales, the report will like this:

Month Top1 Top2 Top3 Top4 Top5

2005-06 A1 A2 A3 A4 A5

2005-07 B1 B2 B3 B4 B5

2005-08 C1 C2 C3 C4 C5

--- --- ---

What I did is:

declare @StartDate and @EndDate, set @StartDate and @EndDate

Delete AAAA (AAAA is a table)

Begin

While (@EndDate<somedate)

Insert into AAAA(sales, Month, Pattern)

Select TOP 5 sales, Month,pattern from sometables order by sales DESC

increase @StartDate and @EndDate by a month

End

Select * from AAAA



It works fine. My question is: Can I get rid of table AAAA? Is there a better way that just use Top 5 combine with something say Union? ( I tried Union and failed )

Thanks in advance,

Long

View 4 Replies View Related

Union All Bug In SP0

Dec 28, 2007



Hi All,

Pls look at the following:



http://blogs.conchango.com/jamiethomson/archive/2006/07/10/SSIS_3A00_-MULTICAST-bug.aspx

The first comment, by 'zpeceno', exactly describes a problem that I have hit upon.
However despite looking thro the list of issues resolved in SP1, I've found no mention of it.
Any chance I could get some offical comment re. the bug described, when it was(/has it been?) officially acknowledged, and what service pack (if any) resolves it?


Many thanks,

View 3 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved