#sql #union #column-alias
#sql #объединение #столбец-псевдоним
Вопрос:
Заголовки столбцов в запросе ОБЪЕДИНЕНИЯ называются как оператор выбора первого запроса, как я могу изменить заголовки столбцов на Entities
и Errors
?
The Query is:
SELECT DISTINCT '1001account' AS [1001account]
,[1001account] AS '1001account'
FROM XXX
WHERE StresstestaccountEnabled LIKE '%Yes%'
AND BalancesheetAmount <> 0
AND PATINDEX('%[^0-9]%', [1001account]) > 0
OR [1001account] IS NULL
UNION
SELECT DISTINCT '[MAX(InterestRate)]' AS InterestType
,MAX(InterestRate) AS 'MAXInterestRate'
FROM XXX
WHERE BalanceSheetAmount <> 0
AND StressTestAccountEnabled LIKE 'Yes'
UNION
SELECT DISTINCT '[MIN(InterestRate)]' AS InterestType
,MIN(InterestRate) AS 'MINInterestRate'
FROM XXX
WHERE BalanceSheetAmount <> 0
AND StressTestAccountEnabled LIKE 'Yes'
UNION
SELECT DISTINCT '[MAX(SwapRate)]' AS [SwapRate]
,MAX(SwapRate) AS 'MAXSwapRate'
FROM XXX
WHERE BalanceSheetAmount <> 0
AND StressTestAccountEnabled LIKE 'Yes'
UNION
SELECT DISTINCT '[MIN(SwapRate)]' AS [SwapRate]
,MIN(SwapRate) AS 'MINSwapRate'
FROM XXX
WHERE BalanceSheetAmount <> 0
AND StressTestAccountEnabled LIKE 'Yes'
UNION
SELECT DISTINCT '[MAX([Margin])]' AS [Margin]
,MAX([Margin]) AS 'MAXS[Margin]'
FROM XXX
WHERE BalanceSheetAmount <> 0
AND StressTestAccountEnabled LIKE 'Yes'
UNION
SELECT DISTINCT '[MIN([Margin])]' AS [Margin]
,MIN([Margin]) AS 'MIN[Margin]'
FROM XXX
WHERE BalanceSheetAmount <> 0
AND StressTestAccountEnabled LIKE 'Yes'
ВЫВОД:
**1001account** **1001account**
[MAX([Margin])] 170.8372200000
[MAX(InterestRate)] 172.7691400000
[MAX(SwapRate)] 70.8750000000
[MIN([Margin])] -70.6084500000
[MIN(InterestRate)] -19.4163150000
[MIN(SwapRate)] -1.0392500000
1001account NULL
5028account NULL
Как вы можете видеть, заголовки столбцов относятся к инструкции select первого запроса. Как я могу изменить имя этих заголовков при использовании UNION
инструкции?
Комментарии:
1. Поместите псевдонимы столбцов в первую ВЫБОРКУ.
2. вы уже написали, что должно быть сделано.
3. Вероятно, есть лучшие способы написать этот запрос.
Ответ №1:
Измените псевдоним в первом select
SELECT DISTINCT '1001account' AS Entities
,[1001account] AS Errors
FROM XXX
WHERE StresstestaccountEnabled LIKE '%Yes%'
AND BalancesheetAmount <> 0
AND PATINDEX('%[^0-9]%', [1001account]) > 0
OR [1001account] IS NULL