Solved

Subqueries with Aggregates and Constants

Posted on 2009-05-19
5
313 Views
Last Modified: 2012-05-07
Problem:  Need to transform data from horizontal to vertical.  IE

Part           Date           Defect1     Defect2
123         5/1/2009           5               6

To

Part           Date            Defect       DefectTotal
123         5/1/2009       Defect1             5
123         5/1/2009       Defect2             6

I am pretty sure this needs to be done with a sub query and I am not sure how to create it.  

I have attached a snip of code.  Can you tell me where to enter the subquery to Keep updated the Fields Defect and DefectTotal?

Thanks
Select 'ColdSpots' As Defect,Sum(ColdSpot) as DefectTotal, 
	From SCRAP
Where Dt between '5/1/2009' and '5/20/2009'

Open in new window

0
Comment
Question by:Jlucht
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 60

Expert Comment

by:chapmandew
ID: 24422634
how many columns total do you have?  ie Defect1, Defect2, etc.
0
 
LVL 3

Author Comment

by:Jlucht
ID: 24422694
15 defects in total
0
 
LVL 60

Accepted Solution

by:
chapmandew earned 500 total points
ID: 24422778
easy way to do it in 2000 (2005 would be different)
declare @date1 datetime, @date2 datetime
select @date1 = '5/1/2009', @date2 = '5/20/2009'

select part, date, defect = 'Defect1' , defecttotal = Defect1
From SCRAP
Where Dt between @date1 and @date2
UNION ALL
select part, date, defect = 'Defect2' , defecttotal = Defect2
From SCRAP
Where Dt between @date1 and @date2

....et.al.
0
 
LVL 3

Author Comment

by:Jlucht
ID: 24424446
That is the code that I need to do what I need.  One more question.  How would I insert that record set into a table.


Below is the code that I used to do it.  I had to change a couple of things.  

Thanks ALOT!!!

Joe



declare @date1 datetime, @date2 datetime
select @date1 = '5/1/2009', @date2 = '5/20/2009'
 
select Distinct partnum, defect = 'Holes' , defecttotal = Sum(Hole)
From SCRAP
Where Dt between @date1 and @date2
Group By Scrap.PartNum
UNION ALL
select Distinct partNum, defect = 'ColdSpot' , defecttotal = Sum(ColdSpot)
From SCRAP
Where Dt between @date1 and @date2
Group By Scrap.PartNum

Open in new window

0
 
LVL 3

Author Closing Comment

by:Jlucht
ID: 31583029
Thanks for everything
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
push and Pull replication 31 47
SQL Server Resume 5 45
SQL - Error "The Multi-Part Identifier could not be found" 2 19
Merge join vs exist 3 27
Hello, In my precious Article  (http://www.experts-exchange.com/Database/Reporting/A_15280-Create-Project-in-Microstrategy-Part-I.html)we saw the Configuration part for Microstrategy which included Metadata Creation and DataSource Preparation as …
Slowly Changing Dimension Transformation component in data task flow is very useful for us to manage and control how data changes in SSIS.
Via a live example, show how to extract information from SQL Server on Database, Connection and Server properties
Via a live example, show how to setup several different housekeeping processes for a SQL Server.

749 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