Пустой числовой результат для объединения T-SQL - PullRequest
1 голос
/ 23 мая 2011

Я пишу запрос Transact-SQL, который включает несколько UNIONS, где, где тип данных второго столбца - int.Тип данных первого столбца - varchar.

Вот пример проблемы, с которой я столкнулся.В приведенном ниже SQL запрос не будет выполнен, потому что он не позволит мне оставить второй столбец пустым для этого последнего оператора SELECT.Я положил туда пустой varchar (''), но для этого требуется int, поэтому я вынужден ввести фиктивное значение, например 0?

SELECT product, price
  FROM tableA    
UNION ALL    
SELECT '', SUM(price)
  FROM tableB    
UNION ALL    
SELECT '', ''
  FROM tableC

Ответы [ 3 ]

5 голосов
/ 23 мая 2011

Почему бы не выбрать нуль и привести его к числу, когда это действительно необходимо?

SELECT product, price
FROM tableA

UNION ALL

SELECT '', SUM(price)
FROM tableB

UNION ALL

SELECT 'space', NULL
FROM tableC
1 голос
/ 23 мая 2011
SELECT product, price
FROM tableA
UNION ALL
SELECT '', SUM(price)
FROM tableB
UNION ALL
SELECT 'space', NULL
FROM tableC

или

SELECT product, price
FROM tableA
UNION ALL
SELECT '', SUM(price)
FROM tableB
UNION ALL
SELECT 'space', 0 -- These are just two hardcoded values, so why are we selecting from a table?
FROM tableC

или

SELECT product, price
FROM tableA
UNION ALL
SELECT '', SUM(price)
FROM tableB
UNION ALL
SELECT 'space', 0
1 голос
/ 23 мая 2011

Как насчет попытки обнулить: SELECT 'space', null

...