| Author |
Topic  |
|
|
jim_jim
Constraint Violating Yak Guru
USA
277 Posts |
Posted - 02/26/2013 : 16:41:30
|
Hi All I have a union query two retreive data of two requests where 1 request is from 2012 and 1 from 2013.
the below sql gets me two records 1 for each request. How do i compare each column and display YES whereever botht the columns are equal,Display NO where both columns are not same and Display NA where both columns are NULL
select requestid,receiveddate,neededby,reportfrequency,definesch,schedule,clmsrvdt,clmsrvdtthru,clmpddt,clmpddtthru,agentid,customername
from Customer_request where requestid = 300430
union
select requestid,receiveddate,neededby,reportfrequency,definesch,schedule,clmsrvdt,clmsrvdtthru,clmpddt,clmpddtthru,agentid,customername
from Customer_request where requestid = 223681
RESULTS requestid receiveddate neededby reportfrequency defineschedule schedulebasedon clmsrvdt clmsrvdtthru clmpddt clmpddtthru agentid 300430 11/29/12 12/6/12 Recurring Monthly 1/1/12 12/31/12 65 223681 1/18/11 2/25/11 Recurring QuaterLY 1/1/11 1/31/11 65 NO NO YES NO NA NA NA N N YES
need help please
|
|
|
Lamprey
Flowing Fount of Yak Knowledge
3833 Posts |
Posted - 02/26/2013 : 17:24:46
|
You could do something like:DECLARE @Foo TABLE (ID INT, Val1 INT, Val2 DATETIME, Val3 VARCHAR(10))
INSERT @Foo
VALUES
(1, 1234, SYSDATETIME(), 'Foo'),
(2, 4321, SYSDATETIME(), 'Bar')
SELECT
CASE WHEN A.ID = B.ID THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val1 = B.Val1 THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val2 = B.Val2 THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val3 = B.Val3 THEN 'Yes' ELSE 'No' END
FROM
(SELECT * FROM @Foo WHERE ID = 1) AS A
INNER JOIN
(SELECT * FROM @Foo WHERE ID = 2) AS B
ON 1 = 1
|
 |
|
|
jim_jim
Constraint Violating Yak Guru
USA
277 Posts |
Posted - 02/27/2013 : 08:27:02
|
How can i get the results from this query along with the values insertedquote: Originally posted by Lamprey
You could do something like:DECLARE @Foo TABLE (ID INT, Val1 INT, Val2 DATETIME, Val3 VARCHAR(10))
INSERT @Foo
VALUES
(1, 1234, SYSDATETIME(), 'Foo'),
(2, 4321, SYSDATETIME(), 'Bar')
SELECT
CASE WHEN A.ID = B.ID THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val1 = B.Val1 THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val2 = B.Val2 THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val3 = B.Val3 THEN 'Yes' ELSE 'No' END
FROM
(SELECT * FROM @Foo WHERE ID = 1) AS A
INNER JOIN
(SELECT * FROM @Foo WHERE ID = 2) AS B
ON 1 = 1
|
 |
|
|
James K
Flowing Fount of Yak Knowledge
1527 Posts |
Posted - 02/27/2013 : 09:19:08
|
Do you mean like shown below?DECLARE @Foo TABLE (ID INT, Val1 INT, Val2 DATETIME, Val3 VARCHAR(10))
INSERT @Foo
VALUES
(1, 1234, SYSDATETIME(), 'Foo'),
(2, 4321, SYSDATETIME(), 'Bar')
SELECT
a.*,
b.*,
CASE WHEN A.ID = B.ID THEN 'Yes' ELSE 'No' END AS SameID,
CASE WHEN A.Val1 = B.Val1 THEN 'Yes' ELSE 'No' END AS SameVal1,
CASE WHEN A.Val2 = B.Val2 THEN 'Yes' ELSE 'No' END AS SameVal2,
CASE WHEN A.Val3 = B.Val3 THEN 'Yes' ELSE 'No' END AS SameVal3
FROM
(SELECT * FROM @Foo WHERE ID = 1) AS A
INNER JOIN
(SELECT * FROM @Foo WHERE ID = 2) AS B
ON 1 = 1 |
 |
|
|
jim_jim
Constraint Violating Yak Guru
USA
277 Posts |
Posted - 02/27/2013 : 10:00:17
|
Nope I would like to see results as below if possible
RESULTS requestid receiveddate neededby reportfrequency defineschedule schedulebasedon clmsrvdt clmsrvdtthru clmpddt clmpddtthru agentid 300430 11/29/12 12/6/12 Recurring Monthly 1/1/12 12/31/12 65 223681 1/18/11 2/25/11 Recurring QuaterLY 1/1/11 1/31/11 65 NO NO YES NO NA NA NA N N YES
quote: Originally posted by James K
Do you mean like shown below?DECLARE @Foo TABLE (ID INT, Val1 INT, Val2 DATETIME, Val3 VARCHAR(10))
INSERT @Foo
VALUES
(1, 1234, SYSDATETIME(), 'Foo'),
(2, 4321, SYSDATETIME(), 'Bar')
SELECT
a.*,
b.*,
CASE WHEN A.ID = B.ID THEN 'Yes' ELSE 'No' END AS SameID,
CASE WHEN A.Val1 = B.Val1 THEN 'Yes' ELSE 'No' END AS SameVal1,
CASE WHEN A.Val2 = B.Val2 THEN 'Yes' ELSE 'No' END AS SameVal2,
CASE WHEN A.Val3 = B.Val3 THEN 'Yes' ELSE 'No' END AS SameVal3
FROM
(SELECT * FROM @Foo WHERE ID = 1) AS A
INNER JOIN
(SELECT * FROM @Foo WHERE ID = 2) AS B
ON 1 = 1
|
 |
|
|
Lamprey
Flowing Fount of Yak Knowledge
3833 Posts |
Posted - 02/27/2013 : 11:37:53
|
Convert the current results to varchar and then union that with the results from my query is one way to do it. DECLARE @Foo TABLE (ID INT, Val1 INT, Val2 DATETIME, Val3 VARCHAR(10))
INSERT @Foo
VALUES
(1, 1234, SYSDATETIME(), 'Foo'),
(2, 4321, SYSDATETIME(), 'Bar')
SELECT
CAST(ID AS VARCHAR(MAX)) AS ID,
CAST(Val1 AS VARCHAR(MAX)) AS Val1,
CAST(Val2 AS VARCHAR(MAX)) AS Val2,
CAST(Val3 AS VARCHAR(MAX)) AS Val3
FROM
@Foo
WHERE ID = 1
UNION ALL
SELECT
CAST(ID AS VARCHAR(MAX)) AS ID,
CAST(Val1 AS VARCHAR(MAX)) AS Val1,
CAST(Val2 AS VARCHAR(MAX)) AS Val2,
CAST(Val3 AS VARCHAR(MAX)) AS Val3
FROM
@Foo WHERE ID = 2
UNION ALL
SELECT
CASE WHEN A.ID = B.ID THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val1 = B.Val1 THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val2 = B.Val2 THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val3 = B.Val3 THEN 'Yes' ELSE 'No' END
FROM
(SELECT * FROM @Foo WHERE ID = 1) AS A
INNER JOIN
(SELECT * FROM @Foo WHERE ID = 2) AS B
ON 1 = 1 |
 |
|
|
jim_jim
Constraint Violating Yak Guru
USA
277 Posts |
Posted - 02/27/2013 : 13:04:10
|
thank youquote: Originally posted by Lamprey
Convert the current results to varchar and then union that with the results from my query is one way to do it. DECLARE @Foo TABLE (ID INT, Val1 INT, Val2 DATETIME, Val3 VARCHAR(10))
INSERT @Foo
VALUES
(1, 1234, SYSDATETIME(), 'Foo'),
(2, 4321, SYSDATETIME(), 'Bar')
SELECT
CAST(ID AS VARCHAR(MAX)) AS ID,
CAST(Val1 AS VARCHAR(MAX)) AS Val1,
CAST(Val2 AS VARCHAR(MAX)) AS Val2,
CAST(Val3 AS VARCHAR(MAX)) AS Val3
FROM
@Foo
WHERE ID = 1
UNION ALL
SELECT
CAST(ID AS VARCHAR(MAX)) AS ID,
CAST(Val1 AS VARCHAR(MAX)) AS Val1,
CAST(Val2 AS VARCHAR(MAX)) AS Val2,
CAST(Val3 AS VARCHAR(MAX)) AS Val3
FROM
@Foo WHERE ID = 2
UNION ALL
SELECT
CASE WHEN A.ID = B.ID THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val1 = B.Val1 THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val2 = B.Val2 THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val3 = B.Val3 THEN 'Yes' ELSE 'No' END
FROM
(SELECT * FROM @Foo WHERE ID = 1) AS A
INNER JOIN
(SELECT * FROM @Foo WHERE ID = 2) AS B
ON 1 = 1
|
 |
|
|
jim_jim
Constraint Violating Yak Guru
USA
277 Posts |
Posted - 02/27/2013 : 13:04:40
|
Thank youquote: Originally posted by James K
Do you mean like shown below?DECLARE @Foo TABLE (ID INT, Val1 INT, Val2 DATETIME, Val3 VARCHAR(10))
INSERT @Foo
VALUES
(1, 1234, SYSDATETIME(), 'Foo'),
(2, 4321, SYSDATETIME(), 'Bar')
SELECT
a.*,
b.*,
CASE WHEN A.ID = B.ID THEN 'Yes' ELSE 'No' END AS SameID,
CASE WHEN A.Val1 = B.Val1 THEN 'Yes' ELSE 'No' END AS SameVal1,
CASE WHEN A.Val2 = B.Val2 THEN 'Yes' ELSE 'No' END AS SameVal2,
CASE WHEN A.Val3 = B.Val3 THEN 'Yes' ELSE 'No' END AS SameVal3
FROM
(SELECT * FROM @Foo WHERE ID = 1) AS A
INNER JOIN
(SELECT * FROM @Foo WHERE ID = 2) AS B
ON 1 = 1
|
 |
|
|
jim_jim
Constraint Violating Yak Guru
USA
277 Posts |
Posted - 02/27/2013 : 13:22:35
|
Can i ask one more favour please Is the below possible without use of the temporary table. I wanted to use the same logic in Business Objects application but it is failing for the reason that the query uses temporary table
quote: Originally posted by Lamprey
Convert the current results to varchar and then union that with the results from my query is one way to do it. DECLARE @Foo TABLE (ID INT, Val1 INT, Val2 DATETIME, Val3 VARCHAR(10))
INSERT @Foo
VALUES
(1, 1234, SYSDATETIME(), 'Foo'),
(2, 4321, SYSDATETIME(), 'Bar')
SELECT
CAST(ID AS VARCHAR(MAX)) AS ID,
CAST(Val1 AS VARCHAR(MAX)) AS Val1,
CAST(Val2 AS VARCHAR(MAX)) AS Val2,
CAST(Val3 AS VARCHAR(MAX)) AS Val3
FROM
@Foo
WHERE ID = 1
UNION ALL
SELECT
CAST(ID AS VARCHAR(MAX)) AS ID,
CAST(Val1 AS VARCHAR(MAX)) AS Val1,
CAST(Val2 AS VARCHAR(MAX)) AS Val2,
CAST(Val3 AS VARCHAR(MAX)) AS Val3
FROM
@Foo WHERE ID = 2
UNION ALL
SELECT
CASE WHEN A.ID = B.ID THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val1 = B.Val1 THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val2 = B.Val2 THEN 'Yes' ELSE 'No' END,
CASE WHEN A.Val3 = B.Val3 THEN 'Yes' ELSE 'No' END
FROM
(SELECT * FROM @Foo WHERE ID = 1) AS A
INNER JOIN
(SELECT * FROM @Foo WHERE ID = 2) AS B
ON 1 = 1
|
 |
|
|
Lamprey
Flowing Fount of Yak Knowledge
3833 Posts |
|
|
jim_jim
Constraint Violating Yak Guru
USA
277 Posts |
|
| |
Topic  |
|
|
|