как показать данные таблицы столбцами в tsql

... и в случае, если что-то идет не так, как надо так или иначе (ядерное уничтожение? не может думать ни о чем больше), у меня есть другое идентичное средство хостинга в другой стране с той же самой установкой.

Поскольку другие отметили: Это - просто экономическая модель. Уровень требуемого дублирования диктуют непосредственно требования и ожидания Ваших клиентов/пользователей. Если они платят за и ожидают время работы в регионе пяти-9s затем, необходимо обеспечить это. Если они не делают, то необходимо обратиться к этому как к бизнес-стратегии.

Однако, если я пытаюсь приблизительно оценить вероятность другой проблемы (программное обеспечение или человек), я думаю, что это - несколько порядков величин выше, чем это.

Простой ответ: Это должно быть обращено процедурой. Не физическим дублированием.

Если человеческая ошибка вызывает Вас время простоя затем, необходимо усилить проверку ошибок, выполненную каждый раз, когда люди вмешиваются. Это, вероятно, означает, что все поправки платформы являются ticketed как запросами на изменение и закончили вторичным человеком. Или что те запросы на изменение содержат больше детали о задачах, которые будут предприняты, и никакое отклонение не может быть взято. Или тот штат просто требует большего количества обучения о том, как работать с осторожностью в продуктивных средах.

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

0
задан 6 July 2010 в 14:17
1 ответ

Вы проверили функцию PIVOT? Вы не упоминаете, какую версию SQL Вы используете, но это доступно в 2008 и делает в значительной степени, что Вы после.

Кроме того, Ваш код кажется ужасно неэффективным. Вы делаете, выбирает внутреннюю часть, выбирает выборку назад данные, к которым у Вас уже есть доступ. Возможно, мне нелегко отождествлять с Вашим набором данных, но он походит на потребность в операторе выбора в Вашей текущей ситуации, а не много выборов. Я верю следующим работам:

select
  i.gName,
  case i.pSize when 0 then sum(Quantity) else 0 end as [0ml],
  case i.pSize when 180 then sum(Quantity) else 0 end as [180ml],
  case i.pSize when 375 then sum(Quantity) else 0 end as [375ml],
  { rest of case samples }
from
  saleslog as s
    inner join ItemGroup as i on s.pGroup = i.gGroup
where
  s.BillDate = '01-06-2010'
group by
  i.gName

Я также немного смущен по Вашему вопросу. Вы упоминаете, что у Вас есть две таблицы, у каждого есть идентификатор и iSize, но я не вижу iSize, таким образом, я принимаю pSize (?). Кроме того, Ваша таблица sales не совпадает с Вашим запросом, т.е. нет никакой суммы количества в Вашей таблице sales, Ваш создавало упоминания [продажи], но Ваше фактическое использование запроса [salesdata].

Возможно, еще некоторое разъяснение?

0
ответ дан 24 November 2019 в 12:54
  • 1
    эй Jon Angliss, я отредактировал свой вопрос как, не было ошибкой. На самом деле я хочу показать данные столбца таблицы ItemSize (т.е. Размер напитков) как Заголовок столбца в моем отчете и количестве Продаж по данным Drink Group (gName) в строках. –  Rajkishor Sahu 6 July 2010 в 14:22
  • 2
    Ваши структуры таблиц все еще не соответствуют Вашему вопросу, таким образом, я не уверен, где Вы получаете iSize от того, когда Ваш вопрос не использует его, и Вы присоединяетесь на iGroup, но в таблице ItemGroup нет никакого iGroup поля. Но, если оператор выбора выше не работает на Вас, смотрит на опцию PIVOT в TSQL, это делает точно, что Вы после. –  Jon Angliss 6 July 2010 в 16:23
  • 3
    iSize определяется в таблице ItemTable, посмотрите ее структуру в вышеупомянутом вопросе –  Rajkishor Sahu 7 July 2010 в 09:47
  • 4
    И iGroup то, где? Ответом является ЦЕНТР, если можно использовать его, или Оператор выбора, если Вы не можете. ВЫБЕРИТЕ * ИЗ (ВЫБЕРИТЕ i.gName, случай i.pSize, когда 0 затем '0ml', когда 180 затем '180 мл', когда 375 затем '375 мл' заканчиваются как [Размер], Количество ОТ saleslog как s внутреннее объединение ItemGroup как я на s.pGroup = i.gGroup ГДЕ s. BillDate = '01-06-2010') ЦЕНТР SalesInfo (СУММА (Количество) ДЛЯ [Размера] В ([0ml], [180 мл], [375 мл])) ORDER BY AS PivotTable [gName], я уверен, что можно изобразить его, соответствуя полям. –  Jon Angliss 7 July 2010 в 10:36

Теги

Похожие вопросы