Повторяющиеся значения возвращаются с объединениями - PullRequest
0 голосов
/ 11 мая 2010

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

В моей базе данных есть таблицы с именами Job, consign, dechead, decitem. Job, consign и dechead всегда будут иметь только одну строку на запись, но у decitem может быть несколько записей, привязанных к dechead с помощью внешнего ключа. Я пишу запрос, который извлекает различные значения из каждой таблицы. Это хорошо для всех таблиц, за исключением децитем. Мне нужно вывести значение счета-фактуры из десятигранника, а из-за нехватки денег - нетто. Когда результаты возвращаются, если в dechead есть несколько дочерних таблиц decitem, отображаются все значения из обеих таблиц. Мне нужно только один раз отобразить значения dechad, а затем все значения decitems.

, например

1 ¦123¦ £ 2000¦15.00¦1

2 ¦ - ¦ ------ ¦20.00¦2

3 ¦ - ¦ ------ ¦25.00¦3

В строке 1 отображаются значения из dechead и первой строки / Join из decitems. Строки 2 и 3 просто отображают значения от дециметра. Если я затем экспортирую запрос в Excel, у меня не будет повторяющихся значений в первых двух полях строк 2 и 3

, например

1 ¦123¦ £ 2000¦15.00¦1

2 ¦123¦ £ 2000¦20.00¦2

3 ¦123¦ £ 2000¦25.00¦3

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 11 мая 2010

это задача лучше всего оставить для приложения, но если вам нужно сделать это в SQL, попробуйте это:

SELECT
    CASE
        WHEN RowVal=1 THEN dt.col1
        ELSE NULL
    END as Col1
    ,CASE
        WHEN RowVal=1 THEN dt.col2
        ELSE NULL
    END as Col2
    ,dt.Col3
    ,dt.Col4
    FROM (SELECT
              col1, col2, col3
                  ,ROW_NUMBER OVER(PARTITION BY Col1 ORDER BY Col1,Col4) AS RowVal
              FROM ...rest of your big query here...
         ) dt
    ORDER BY dt.col1,dt.Col4
0 голосов
/ 11 мая 2010

Проверьте 'group by' для вашей РСУБД http://msdn.microsoft.com/en-US/library/ms177673%28v=SQL.90%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...