Member 14751855 Ответов: 1

Как конвертировать MS доступ к эквивалентности оператора к серверу SQL запросе..любая помощь будет действительно оценили.


IIf([group_code]="NA","не подлежит дисконтированию",
"Discountable - "+[GROUP_DESCRIPTION])
Как [SOC_DISCOUNT_GROUP Desc],
"Active (A)" AS [STATUS Desc],

IIf([data_bucket_mb] Is Null,[DATA_INCLUDED],
IIf([data_bucket_mb]=9999999,"неограниченно",
IIf([data_bucket_mb]=0,"0",
IIf([data_bucket_mb]<1024,
Отделка([DATA_BUCKET_MB])+"МБ",обивка(круглый([DATA_BUCKET_MB]/1024,2))

Что я уже пробовал:

Мне нужно преобразовать его с помощью оператора Case.

ZurdoDev

Очень просто. Случай, или слияние, или что-то еще. И они не все одинаковы. Где ты застрял?

Member 14751855

IIf([group_code]="NA","не подлежит дисконтированию",
"Discountable - "+[GROUP_DESCRIPTION])
Как [SOC_DISCOUNT_GROUP Desc],


В Sql Запросе--
Случай
когда group_code]="NA"
тогда "не дисконтируется"
Еще "доступ - "+[GROUP_DESCRIPTION]
конец
[SOC_DISCOUNT_GROUP Desc]
Правильно ли это? У меня есть путаница только в другой части...где добавить +[GROUP_DESCRIPTION]? что означает знак плюс?

1 Ответов

Рейтинг:
11

Wendelius

Я бы полагался на две вещи:
- Документация
- Попытка запустить инструкцию в SSMS.
Таким образом, вы можете увидеть, каков ожидаемый формат и функциональность каждого оператора, и попробовать его использовать

Что касается документации, взгляните на нее
- CASE (Transact-SQL) - SQL Server | Microsoft Docs[^]
- + (Конкатенация строк) (Transact-SQL) - SQL Server | Microsoft Docs[^]
или CONCAT (Transact-SQL) - SQL Server | Microsoft Docs[^]
- Раунд (Transact-SQL) - SQL Server | Microsoft Docs[^]
- Приведение и преобразование (Transact-SQL) - SQL Server | Microsoft Docs[^]

Таким образом, основываясь на них, ваш запрос должен быть правильным, что касается части дела, что-то вроде

SELECT
...
   CASE 
      WHEN [group_code]='NA' THEN 'Not Discountable'
      ELSE 'Discountable - ' + [GROUP_DESCRIPTION]
   END AS [SOC_DISCOUNT_GROUP Desc],
   'Active (A)' AS [STATUS Desc],
   CASE
      WHEN [data_bucket_mb] IS NULL THEN [DATA_INCLUDED]
      WHEN [data_bucket_mb] = 9999999 THEN 'Unlimited'
      WHEN [data_bucket_mb] = 0 THEN '0'
      WHEN [data_bucket_mb] < 1024 THEN CAST([DATA_BUCKET_MB] AS varchar(100)) + "MB"
      ELSE CAST(ROUND( ROUND([DATA_BUCKET_MB]/1024,2)) AS varchar(100)
   END
...


Maciej Los

5ed!

Wendelius

Спасибо!