Solved

sql server query

Posted on 2014-03-10
2
238 Views
Last Modified: 2014-03-11
Query 1


I have a query that looks like this:

query 1
If you notice in the FROM clause of the case statement, it's doing the select from TestTable that is aliased as tt2

When I run this query it works just fine.

SELECT Q1.[Col1]
      ,Q1.[Col2]
      ,Q1.[Col3]
      ,TotalCompensation
      ,CASE WHEN [Col1] = 0 THEN 0 ELSE AnnualCompensation - (
           SELECT [TotalGross] + [TotalBenefits]
           FROM [TestDatabase].[dbo].[TestTable] tt2
           WHERE
               tt2.[Col1] = Q1.[Col1] AND
               tt2.[Col2] = Q1.[Col2] AND
               tt2.[Col3] = Q1.[Col3] - 1
           ) END AS TotalCompDiff
FROM FROM [TestDatabase].[dbo].[TestTable] tt2
CROSS APPLY (
    SELECT [TotalGross] + [TotalBenefits] AS AnnualCompensation
) AS cross_apply_1

Open in new window



Query 2

Now I'm using a very similar query that looks like this:

my query 2
SELECT Q1.[Col1]
      ,Q1.[Col2]
      ,Q1.[Col3]
      ,TotalCompensation
    ,CASE WHEN [Col1] = 0 THEN 0 ELSE AnnualCompensation - (
           SELECT [TotalGross] + [TotalBenefits]
           FROM Q1
           WHERE
               tt2.[Col1] = Q1.[Col1] AND
               tt2.[Col2] = Q1.[Col2] AND
               tt2.[Col3] = Q1.[Col3] - 1
           ) END AS TotalCompDiff
FROM
(
--- start of query 1 -------------------------------------------


--- end of query 1 ---------------------------------------------
) Q1
CROSS APPLY (
    SELECT [TotalGross] + [TotalBenefits] AS AnnualCompensation
) AS cross_apply_1

Open in new window


In this query, my main select statement gets its data from a query that goes in between the comments lines I'm showing in green. I didn't show the query in between the comment lines for simplicity.

Now in my case statement in this query my select statement is grabbing the column from my query which I called Q1.

When I run this query it didn't work. I don't think I'm writing the from clause in my cases statement correctly to reference my query Q1.

Right now I have this:

           SELECT [TotalGross] + [TotalBenefits]
           FROM Q1


Anyone know how I should correctly be referencing my query in my Case Statement?
p1.jpg
p2.jpg
0
Comment
Question by:maqskywalker
2 Comments
 
LVL 6

Assisted Solution

by:c1nmo
c1nmo earned 250 total points
ID: 39918970
If they are projected (i.e. need to be in SELECT list) from Q1 then:

SELECT Q1.[TotalGross] + Q1.[TotalBenefits]
           FROM Q1
0
 
LVL 69

Accepted Solution

by:
Scott Pletcher earned 250 total points
ID: 39919251
"tt2" is likely no longer defined.  Therefore, SQL can't process a comparison against that alias.
0

Featured Post

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

JSON is being used more and more, besides XML, and you surely wanted to parse the data out into SQL instead of doing it in some Javascript. The below function in SQL Server can do the job for you, returning a quick table with the parsed data.
For both online and offline retail, the cross-channel business is the most recent pattern in the B2C trade space.
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
Via a live example combined with referencing Books Online, show some of the information that can be extracted from the Catalog Views in SQL Server.

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question