Как получить данные без повторов, используя перекрестное соединение и левое соединение в SQL - PullRequest
0 голосов
/ 24 июня 2019

У меня есть

enter image description here

где мой запрос это

WITH cte AS (SELECT        b.ID, b.BranchName, j.BoxName, j.Price
                             FROM            BRANCHES AS b CROSS JOIN
                                                      BOXES AS j)
    SELECT        c.BranchName, c.BoxName, COUNT(a.AdditionalBoxes) AS Expr1
     FROM            AIRBILLS AS a LEFT OUTER JOIN
                              cte AS c ON c.ID = a.BranchID
     WHERE        (a.DateOfAirbill = '06-17-2019')
     GROUP BY c.BranchName, a.AdditionalBoxes, c.BoxName

Я хочу добиться этого:

enter image description here

что ни одна и та же дата не получит

У меня есть таблица [AIRBILLS] со столбцами AdditionalBoxes и BranchID (additionalboxes - десятичный тип), а branchID имеют отношение к TABLE.BRANCHES.ID и СТОЛ BOXES со столбцом price и Boxname (цена является десятичным типом) цена имеет отношение к AIRBILLS.AdditionalBoxes и ТАБЛИЦА BRANCHES, которая имеет столбец branchID и BranchName

моя проблема в том, что каждый столбец, который я получаю, имеет много значений, которые не являются правильными значениями в столбцах полей.

Это данные, которые я получаю при выполнении запроса

enter image description here

Предполагается, что я хочу, чтобы только 4 поля (Extra Small , Small, Medium and Large) появлялись вместе с их соответствующим количеством, если в них нет данных, значение будет равно 0 или если будет иметь правильное количество, будет суммой для каждого блока.

кстати a.AdditionalBoxes может быть null

Я хочу этого достичь

Цены на коробку

Extra Small: 20.00
Small:       30.00
Medium:      40.00
Large:       50.00
|-----------|-------------|-------|-----   |-------|----------|------------|
|Branch Name| Extra Small | Small | Medium | Large |Total qty |Total Amount| 
|---------- |-------------| ------|------- |-------|----------|------------|
|           |             |       |        |       |          |            |
|-----------|------------ |-------|--------|-------|----------|------------|
| branch1   |      1      |    0  |     0  |   0   |      1   |    20      |
|-----------|------------ |-------|--------|-------|----------|------------|
| branch2   |      1      |    2  |     4  |   0   |      7   |    240     |
|-----------|-------------|-------|--------|-------|----------|------------|    
| Total     |      2      |    2  |     4  |   0   |      8   |    260     |
|-----------|-------------|-------|--------|-------|----------|------------|

но мой запрос продолжает делать это

Цены на коробку

Extra Small: 20.00
Small:       30.00
Medium:      40.00
Large:       50.00
|-----------|-------------|-------|-----   |-------|----------|------------|
|Branch Name| Extra Small | Small | Medium | Large |Total qty |Total Amount| 
|---------- |-------------| ------|------- |-------|----------|------------|
|           |             |       |        |       |          |            |
|-----------|------------ |-------|--------|-------|----------|------------|
| branch1   |      1      |    1  |     1  |   1   |      4   |    80      |
|-----------|------------ |-------|--------|-------|----------|------------|
| branch2   |      1      |    1  |     1  |   1   |      4   |    80      |
|-----------|-------------|-------|--------|-------|----------|------------|    
| Total     |      2      |    2  |     2  |   2   |      8   |    160     |
|-----------|-------------|-------|--------|-------|----------|------------|

значение extra small будет применяться ко всем полям или, если значение extra small равно нулю, 2-е появится выше того, что я здесь пропускаю, пожалуйста, помогите.

https://files.fm/u/cjgcwsh8#/view/Capture3.PNG

это мой отчет rdlc

...