sql server 2008 query

Posted on 2013-12-18
Last Modified: 2013-12-18
Hi experts,

I'm using Sql Server 2008 with SSMS.

I have a table that looks like this:

my table
This is the script to create this table:

CREATE TABLE [dbo].[MyTestTable1](
	[DepartmentID] [int] NULL,
	[DepartmentName] [varchar](50) NULL
INSERT [dbo].[MyTestTable1] ([DepartmentID], [DepartmentName]) VALUES (1, N'Accounting')
INSERT [dbo].[MyTestTable1] ([DepartmentID], [DepartmentName]) VALUES (2, N'Human Resources')
INSERT [dbo].[MyTestTable1] ([DepartmentID], [DepartmentName]) VALUES (3, N'Finance')
INSERT [dbo].[MyTestTable1] ([DepartmentID], [DepartmentName]) VALUES (4, N'Marketing')

Open in new window

Now I want to write a query that creates a column to my table. The column I'm adding is called Test Column.  This column concatenates DepartmentID a dash and then DepartmentName.
I'm also creating a DepartmentID value of 0 and adding it to the DepartmentID column and this value should contain the word All as the value in the TestColum.

So my desired result should look like this drawing which I drew in Excel.

my desired result set
The red items in the drawing are what I  want to add.

Query 1

So I have this query:

SELECT 0 AS DepartmentID
SELECT m.DepartmentID
FROM [TestDatabase].[dbo].[MyTestTable1] m

When I run it I get this:

query 1
Query 2

So now I just want to add the Concatenated column called TestColumn to Query 1.
So i have this query:

SELECT 0 AS DepartmentID
SELECT m.DepartmentID
      ,Cast(m.DepartmentID As varchar) + ' - ' + m.DepartmentName As TestColumn
FROM [TestDatabase].[dbo].[MyTestTable1] m

But this query gives me this error:

All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

Anyone know how I can fix Query 2 so it gives my desired result set as shown in the image above?
Question by:maqskywalker
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
LVL 11

Accepted Solution

Simone B earned 250 total points
ID: 39727915
SELECT 0 AS DepartmentID, 'All' as TestColumn
SELECT m.DepartmentID
      ,Cast(m.DepartmentID As varchar) + ' - ' + m.DepartmentName
FROM [TestDatabase].[dbo].[MyTestTable1] m

your first select has only 1 column, and your second select has 2. They both have to have the same number of columns, so just add the 'All' in the first select

(edited, sorry)

Expert Comment

ID: 39727951
That is because the second column for your first record is null. Try something like this:
SELECT 0 AS DepartmentID, NULL
SELECT m.DepartmentID
      ,Cast(m.DepartmentID As varchar) + ' - ' + m.DepartmentName As TestColumn
FROM [TestDatabase].[dbo].[MyTestTable1] m
LVL 69

Assisted Solution

by:Scott Pletcher
Scott Pletcher earned 250 total points
ID: 39727955
If you're going to need this in multiple places, I'd add the test column definition to the main table as a computed, non-persisted column.

Also, note that "UNION ALL" makes more sense in this case than "UNION", and that you an ORDER BY is required to guarantee that Dept "0" comes out first.

USE [TestDatabase]
ALTER TABLE [dbo].[MyTestTable1] ADD TestColumn AS CAST(DepartmentID AS varchar(10)) + ' - ' + DepartmentName

SELECT 0 AS DepartmentID, 'All' AS TestColumn
SELECT m.DepartmentID, m.TestColumn
FROM [TestDatabase].[dbo].[MyTestTable1] m
ORDER BY DepartmentID

Featured Post

Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

Question has a verified solution.

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

Why is this different from all of the other step by step guides?  Because I make a living as a DBA and not as a writer and I lived through this experience. Defining the name: When I talk to people they say different names on this subject stuff l…
In this article I will describe the Copy Database Wizard method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
Via a live example, show how to set up a backup for SQL Server using a Maintenance Plan and how to schedule the job into SQL Server Agent.
Via a live example, show how to setup several different housekeeping processes for a SQL Server.

732 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