Описание проблемы
Пусть в таблицах C и V есть эти значения
>> Table V <<
| UnID | BillID | ProductDesc | Value | ... |
| 1 | 1 | 'Orange Juice' | 3.05 | ... |
| 1 | 1 | 'Apple Juice' | 3.05 | ... |
| 1 | 2 | 'Pizza' | 12.05 | ... |
| 1 | 2 | 'Chocolates' | 9.98 | ... |
| 1 | 2 | 'Honey' | 15.98 | ... |
| 1 | 3 | 'Bread' | 3.98 | ... |
| 2 | 1 | 'Yogurt' | 8.55 | ... |
| 2 | 1 | 'Ice Cream' | 7.05 | ... |
| 2 | 1 | 'Beer' | 9.98 | ... |
| 2 | 2 | 'League of Legends RP' | 40.00 | ... |
>> Table C <<
| UnID | BillID | ClientName | ... |
| 1 | 1 | 'Alexander' | ... |
| 1 | 2 | 'Tom' | ... |
| 1 | 3 | 'Julia' | ... |
| 2 | 1 | 'Tom' | ... |
| 2 | 2 | 'Alexander' | ... |
В таблице C указаны значения каждого продукта, который связан со счетомномер.Таблица V имеет отношение между именем клиента и номером счета.Однако номер счета имеет счетчик, который зависит от UnId, который является идентификатором единства магазина.При этом каждый магазин имеет свой собственный счет № 1, номер 2 и т. Д. Кроме того, количество счетов в каждом магазине не равно.
Описание решения
Япытаясь сделать выбор между C левого соединения V без успеха.Поскольку каждый BillID зависит от UnID, я должен выполнить соединение, учитывая сцепление между этими двумя столбцами.Я использовал этот скрипт, но он выдает ошибку.
SELECT
SUM(C.Value),
V.ClientName
FROM
C
LEFT JOIN
V
ON
CONCAT(C.UnID, C.BillID) = CONCAT(V.UnID, V.BillID)
GROUP BY
V.ClientName
и SQL-сервер возвращает мне это 'CONCAT' is not a recognized built-in function name
.Я использую Microsoft SQL Server 2008 R2
Является ли использование CONCAT неправильным?Или это так, как я пытался выбрать?Не могли бы вы мне помочь?
[OBS: Таблицы, которые я вам представляю, предназначены только для объяснения моих трудностей.При этом, если вы обнаружите какие-либо ошибки в объяснении, пожалуйста, дайте мне знать, чтобы исправить их.]