объединить столбцы на основе пустых столбцов - PullRequest
0 голосов
/ 28 мая 2019

У меня три столбца, - и / должен использоваться как результат разделения должен появиться в новом столбце (Индекс файла-субиндекс / год), если субиндекс пуст, тогда результат должен быть (Индекс файла / год).

  SELECT 
[ File Index].[File Index]
, [ File Index].[Sub Index]
, [ File Index].[Financial Year]
, [ File Index].[File Index] & [Sub Index] & [Financial Year] AS [Composite Index]
  FROM [File Index];

Ответы [ 2 ]

2 голосов
/ 28 мая 2019

Поскольку у вас есть оба MySQL и MS Access, вот решения для обоих.

Для MySQL вы можете использовать оператор CASE для этого:

SELECT [File Index], [Sub Index], [Financial Year],
       CASE WHEN [Sub Index] IS NOT NULL 
             THEN Concat([File Index], '-', [Sub Index], '/', [Financial Year]) 
             ELSE Concat([File Index], '/', [Financial Year]) 
       END as [Composite Index] 
FROM [File Index];

Для MS Access вы будете использовать Switch(...):

SELECT [File Index], [Sub Index], [Financial Year],
       Switch(Not IsNull([Sub Index]), 
                 [File Index] & '-' & [Sub Index] & '/' & [Financial Year],
              IsNull([Sub Index]), 
                 [File Index] & '/' & [Financial Year]
       ) as [Composite Index] 
FROM [File Index];
1 голос
/ 28 мая 2019

Вы можете использовать функцию IIF: IIF(Condition;ConcatenationIfTrue;ConcatenationIfFalse)

  SELECT 
[ File Index].[File Index]
, [ File Index].[Sub Index]
, [ File Index].[Financial Year]
, IIF(ISNULL([Sub Index];[ File Index].[File Index] & "/" & [Financial Year];[ File Index].[File Index] & [Sub Index] & [Financial Year]) AS [Composite Index]
  FROM [File Index];
...