2013-10-24 35 views
0

我想寫一個查詢,爲我的表的每一行添加名稱。它似乎應該很簡單,但我不能弄明白,因爲我不是SQL的專家。SQL表 - 每行的名稱

這裏就是我想我的表看起來像:

  New Cancels Net 
Daily  0   1 -1 
Weekly 0  1 -1 
Monthly 25 34 -9 
Quarterly 25 34 -9 
Annually 535 552 -17 
Total  3418 1398 2020 

這裏是我的表現:

New  Cancels Net 
0   1 -1 
0   1 -1 
25   34 -9 
25   34 -9 
535   552 -17 
3418 1398 2020 

下面是它背後的查詢(我使用SQL Server Management Studio中):

SELECT [New Orders] 
     ,[Cancels] 
     ,[Net] 
FROM [DailyFigures] 
WHERE [UID] IN (
SELECT TOP 1 [UID] 
FROM [DailyFigures] 
ORDER BY [UID] DESC) 
UNION ALL 
SELECT [Orders] 
     ,[Cancels] 
     ,[Net] 
FROM [WeeklyFigures] 
WHERE [UID] IN (
SELECT TOP 1 [UID] 
FROM [WeeklyFigures] 
ORDER BY [UID] DESC) 
UNION ALL 
SELECT [Orders] 
     ,[Cancels] 
     ,[Net] 
FROM [MonthlyFigures] 
WHERE [UID] IN (
SELECT TOP 1 [UID] 
FROM [MonthlyFigures] 
ORDER BY [UID] DESC) 
UNION ALL 
SELECT [Orders] 
     ,[Cancels] 
     ,[Net] 
FROM [QuarterlyFigures] 
WHERE [UID] IN (
SELECT TOP 1 [UID] 
FROM [QuarterlyFigures] 
ORDER BY [UID] DESC) 
UNION ALL 
SELECT [Orders] 
     ,[Cancels] 
     ,[Net] 
FROM [AnnuallyFigures] 
WHERE [UID] IN (
SELECT TOP 1 [UID] 
FROM [AnnuallyFigures] 
ORDER BY [UID] DESC) 
UNION ALL 
SELECT SUM([Orders]) AS Orders, SUM([Cancels]) AS Cancels, SUM([Net]) AS Net FROM [AnnuallyFigures] 

我正在考慮添加一個列的行數,並以某種方式從數字更改行數名稱,但我不知道如何做到這一點。任何幫助,將不勝感激。謝謝。

+0

如果你簡單地都加一個常數,如「每天」你的SELECT子句,改變工會的工會,鮑勃·可能是你的叔叔。 –

回答

2

只需添加一個「文本字符串」爲每個單獨的選擇是這樣的:

SELECT 'DAILY' as ' ', [New Orders],[Cancels],[Net] 
FROM [DailyFigures] 
WHERE [UID] IN 
    (SELECT TOP 1 [UID] FROM [DailyFigures] ORDER BY [UID] DESC) 

UNION ALL 

SELECT 'WEEKLY' as ' ', [Orders],[Cancels],[Net] 
FROM [WeeklyFigures] 
WHERE [UID] IN 
    (SELECT TOP 1 [UID] FROM [WeeklyFigures] ORDER BY [UID] DESC) 

UNION ALL 

SELECT 'MONTHLY' as ' ', [Orders],[Cancels],[Net] 
FROM [MonthlyFigures] 
WHERE [UID] IN 
    (SELECT TOP 1 [UID] FROM [MonthlyFigures] ORDER BY [UID] DESC) 

UNION ALL 

SELECT 'QUARTERLY' as ' ', [Orders],[Cancels],[Net] 
FROM [QuarterlyFigures] 
WHERE [UID] IN 
    (SELECT TOP 1 [UID] FROM [QuarterlyFigures] ORDER BY [UID] DESC) 

UNION ALL 

SELECT 'ANNUALLY' as ' ', [Orders],[Cancels],[Net] 
FROM [AnnuallyFigures] 
WHERE [UID] IN 
    (SELECT TOP 1 [UID] FROM [AnnuallyFigures] ORDER BY [UID] DESC) 

UNION ALL 

SELECT 'TOTAL' as ' ', 
    SUM([Orders]) AS Orders, 
    SUM([Cancels]) AS Cancels, 
    SUM([Net]) AS Net 
FROM [AnnuallyFigures] 
+1

爲什麼你把'UNION ALL'換成'UNION'? –

+0

原來,我只是複製了查詢並使用了union,然後在查看它之後,我將它移除了。我在我自己的東西中使用了UNION(不是所有的聯盟),但之前的評論讓我想到要刪除它。也許它應該留在? – BWS

+1

我看不出爲什麼這應該是一個工會。聯盟將嘗試刪除重複項,並且由於每行的常量不同,這似乎不是必要的 - 除非在提供聯合的任何單個查詢中存在可怕的歸一化問題。 –