【问题标题】:Local xml file to ssrs report本地 xml 文件到 ssrs 报告
【发布时间】:2017-02-02 13:34:59
【问题描述】:

我有以下xml

<Configuration>
  <Name>Test</Name>
  <Description />
  <CreatedOn>1/16/2017-2:59:32-PM</CreatedOn>
  <CreatedBy>admin</CreatedBy>
  <LastModifiedOn>1/16/2017-2:59:32-PM</LastModifiedOn>
  <LastModifiedBy>admin</LastModifiedBy>
  <IsConfigured>False</IsConfigured>
  <ParentId>3</ParentId>
  <VersionMajor>0</VersionMajor>
  <VersionMinor>4</VersionMinor>
  <LifecycleState>Development</LifecycleState>
  <Archived>False</Archived>
  <IsTest>False</IsTest>
  <RunMode>Timed</RunMode>
  <SelectedTimeUnit>Milliseconds</SelectedTimeUnit>
  <PulseInMs>2000</PulseInMs>
  <ClientLocation />
  <IsValid>True</IsValid>
  <Instrument>
    <Adapter-Simulator1>
      <DeviceInstanceName>Sim1</DeviceInstanceName>
      <DeviceConfiguration>
        <Channels>1</Channels>
        <IntensityMax>1</IntensityMax>
        <SimulatorMode>HiLo</SimulatorMode>
        <StartChannel>0</StartChannel>
        <Wavelength>1</Wavelength>
        <WavelengthEnd>100</WavelengthEnd>
        <WavelengthStartq>1</WavelengthStartq>
      </DeviceConfiguration>
      <Outputs>
        <ChannelNumber>1</ChannelNumber>
        <Name>1</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>2</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>3</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>4</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>5</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>6</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>7</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>8</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>9</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>10</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>11</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>12</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>13</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>14</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>15</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>16</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>17</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>18</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>19</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>20</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>21</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>22</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>23</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>24</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>25</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>26</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>27</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>28</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>29</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>30</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>31</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>32</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>33</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>34</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>35</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>36</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>37</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>38</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>39</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>40</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>41</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>42</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>43</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>44</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>45</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>46</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>47</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>48</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>49</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>50</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>51</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>52</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>53</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>54</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>55</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>56</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>57</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>58</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>59</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>60</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>61</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>62</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>63</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>64</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>65</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>66</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>67</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>68</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>69</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>70</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>71</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>72</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>73</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>74</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>75</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>76</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>77</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>78</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>79</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>80</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>81</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>82</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>83</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>84</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>85</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>86</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>87</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>88</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>89</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>90</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>91</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>92</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>93</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>94</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>95</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>96</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>97</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>98</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>99</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>100</Name>
        <ChannelNumber>2</ChannelNumber>
        <Name>Temperature-K</Name>
        <ChannelNumber>3</ChannelNumber>
        <Name>Pressure-inHg-absolute</Name>
      </Outputs>
    </Adapter-Simulator1>
    <Adapter-Simulator3>
      <DeviceInstanceName>Sim3</DeviceInstanceName>
      <DeviceConfiguration>
        <Channels>1</Channels>
        <IntensityMax>1</IntensityMax>
        <SimulatorMode>Random</SimulatorMode>
        <StartChannel>0</StartChannel>
        <Wavelength>1</Wavelength>
        <WavelengthEnd>140</WavelengthEnd>
        <WavelengthStartq>120</WavelengthStartq>
      </DeviceConfiguration>
      <Outputs>
        <ChannelNumber>1</ChannelNumber>
        <Name>120</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>121</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>122</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>123</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>124</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>125</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>126</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>127</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>128</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>129</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>130</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>131</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>132</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>133</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>134</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>135</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>136</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>137</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>138</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>139</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>140</Name>
        <ChannelNumber>2</ChannelNumber>
        <Name>Temperature-K</Name>
        <ChannelNumber>3</ChannelNumber>
        <Name>Pressure-inHg-absolute</Name>
      </Outputs>
    </Adapter-Simulator3>
    <Adapter-Simulator2>
      <DeviceInstanceName>Sim2</DeviceInstanceName>
      <DeviceConfiguration>
        <Channels>1</Channels>
        <IntensityMax>1</IntensityMax>
        <SimulatorMode>Random</SimulatorMode>
        <StartChannel>0</StartChannel>
        <Wavelength>1</Wavelength>
        <WavelengthEnd>120</WavelengthEnd>
        <WavelengthStartq>100</WavelengthStartq>
      </DeviceConfiguration>
      <Outputs>
        <ChannelNumber>1</ChannelNumber>
        <Name>100</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>101</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>102</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>103</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>104</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>105</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>106</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>107</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>108</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>109</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>110</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>111</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>112</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>113</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>114</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>115</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>116</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>117</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>118</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>119</Name>
        <ChannelNumber>1</ChannelNumber>
        <Name>120</Name>
        <ChannelNumber>2</ChannelNumber>
        <Name>Temperature-K</Name>
        <ChannelNumber>3</ChannelNumber>
        <Name>Pressure-inHg-absolute</Name>
      </Outputs>
    </Adapter-Simulator2>
    <Adapter-Counter>
      <DeviceInstanceName>Counter1</DeviceInstanceName>
      <DeviceConfiguration>
        <StartingValue>0</StartingValue>
        <IncrementBy>1</IncrementBy>
        <ResetIfPulseMissed>False</ResetIfPulseMissed>
      </DeviceConfiguration>
      <Outputs>
        <ChannelNumber>1</ChannelNumber>
        <Name>CounterValue</Name>
      </Outputs>
    </Adapter-Counter>
  </Instrument>
  <Connectors>
    <Connection>
      <Sink_Instrument>Simulator2</Sink_Instrument>
      <Source_Instrument>Simulator1</Source_Instrument>
    </Connection>
    <Connection>
      <Sink_Instrument>Simulator2</Sink_Instrument>
      <Source_Instrument>Counter</Source_Instrument>
    </Connection>
  </Connectors>
</Configuration>

我希望我的 SSRS 报告以表格格式显示 xml。

到目前为止,我已经尝试了以下方法。我使用了下面的链接并创建了一个 xmltable 函数。该函数按预期提取 xml,但不确定如何在报告中显示。

[Shredding XML From Execution Plans

切碎 xml 后,我使用以下链接创建列表并显示 xml,但没有运气

[https://www.youtube.com/watch?time_continue=6&v=h8EidVXasYg]

非常感谢任何帮助!

【问题讨论】:

    标签: sql xml reporting-services report


    【解决方案1】:

    您将无法将其放入一个大表,因为有多个 1:n 嵌套数据,您将创建一个具有多次重复的 CROSS JOIN

    以下内容向您展示了如何从 XML 中检索数据,并为每个级别提供了一些示例。剩下的就看你自己了……

    DECLARE @xml XML=
    N'<Configuration>
      <Name>Test</Name>
      <Description />
      <CreatedOn>1/16/2017-2:59:32-PM</CreatedOn>
      <CreatedBy>admin</CreatedBy>
      <LastModifiedOn>1/16/2017-2:59:32-PM</LastModifiedOn>
      <LastModifiedBy>admin</LastModifiedBy>
      <IsConfigured>False</IsConfigured>
      <ParentId>3</ParentId>
      <VersionMajor>0</VersionMajor>
      <VersionMinor>4</VersionMinor>
      <LifecycleState>Development</LifecycleState>
      <Archived>False</Archived>
      <IsTest>False</IsTest>
      <RunMode>Timed</RunMode>
      <SelectedTimeUnit>Milliseconds</SelectedTimeUnit>
      <PulseInMs>2000</PulseInMs>
      <ClientLocation />
      <IsValid>True</IsValid>
      <Instrument>
        <Adapter-Simulator1>
          <DeviceInstanceName>Sim1</DeviceInstanceName>
          <DeviceConfiguration>
            <Channels>1</Channels>
            <IntensityMax>1</IntensityMax>
            <SimulatorMode>HiLo</SimulatorMode>
            <StartChannel>0</StartChannel>
            <Wavelength>1</Wavelength>
            <WavelengthEnd>100</WavelengthEnd>
            <WavelengthStartq>1</WavelengthStartq>
          </DeviceConfiguration>
          <Outputs>
            <ChannelNumber>1</ChannelNumber>
            <Name>1</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>2</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>3</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>4</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>5</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>6</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>7</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>8</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>9</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>10</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>11</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>12</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>13</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>14</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>15</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>16</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>17</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>18</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>19</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>20</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>21</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>22</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>23</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>24</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>25</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>26</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>27</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>28</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>29</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>30</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>31</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>32</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>33</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>34</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>35</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>36</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>37</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>38</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>39</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>40</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>41</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>42</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>43</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>44</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>45</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>46</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>47</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>48</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>49</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>50</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>51</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>52</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>53</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>54</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>55</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>56</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>57</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>58</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>59</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>60</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>61</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>62</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>63</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>64</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>65</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>66</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>67</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>68</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>69</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>70</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>71</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>72</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>73</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>74</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>75</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>76</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>77</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>78</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>79</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>80</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>81</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>82</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>83</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>84</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>85</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>86</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>87</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>88</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>89</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>90</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>91</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>92</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>93</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>94</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>95</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>96</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>97</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>98</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>99</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>100</Name>
            <ChannelNumber>2</ChannelNumber>
            <Name>Temperature-K</Name>
            <ChannelNumber>3</ChannelNumber>
            <Name>Pressure-inHg-absolute</Name>
          </Outputs>
        </Adapter-Simulator1>
        <Adapter-Simulator3>
          <DeviceInstanceName>Sim3</DeviceInstanceName>
          <DeviceConfiguration>
            <Channels>1</Channels>
            <IntensityMax>1</IntensityMax>
            <SimulatorMode>Random</SimulatorMode>
            <StartChannel>0</StartChannel>
            <Wavelength>1</Wavelength>
            <WavelengthEnd>140</WavelengthEnd>
            <WavelengthStartq>120</WavelengthStartq>
          </DeviceConfiguration>
          <Outputs>
            <ChannelNumber>1</ChannelNumber>
            <Name>120</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>121</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>122</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>123</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>124</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>125</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>126</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>127</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>128</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>129</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>130</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>131</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>132</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>133</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>134</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>135</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>136</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>137</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>138</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>139</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>140</Name>
            <ChannelNumber>2</ChannelNumber>
            <Name>Temperature-K</Name>
            <ChannelNumber>3</ChannelNumber>
            <Name>Pressure-inHg-absolute</Name>
          </Outputs>
        </Adapter-Simulator3>
        <Adapter-Simulator2>
          <DeviceInstanceName>Sim2</DeviceInstanceName>
          <DeviceConfiguration>
            <Channels>1</Channels>
            <IntensityMax>1</IntensityMax>
            <SimulatorMode>Random</SimulatorMode>
            <StartChannel>0</StartChannel>
            <Wavelength>1</Wavelength>
            <WavelengthEnd>120</WavelengthEnd>
            <WavelengthStartq>100</WavelengthStartq>
          </DeviceConfiguration>
          <Outputs>
            <ChannelNumber>1</ChannelNumber>
            <Name>100</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>101</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>102</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>103</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>104</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>105</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>106</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>107</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>108</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>109</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>110</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>111</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>112</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>113</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>114</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>115</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>116</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>117</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>118</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>119</Name>
            <ChannelNumber>1</ChannelNumber>
            <Name>120</Name>
            <ChannelNumber>2</ChannelNumber>
            <Name>Temperature-K</Name>
            <ChannelNumber>3</ChannelNumber>
            <Name>Pressure-inHg-absolute</Name>
          </Outputs>
        </Adapter-Simulator2>
        <Adapter-Counter>
          <DeviceInstanceName>Counter1</DeviceInstanceName>
          <DeviceConfiguration>
            <StartingValue>0</StartingValue>
            <IncrementBy>1</IncrementBy>
            <ResetIfPulseMissed>False</ResetIfPulseMissed>
          </DeviceConfiguration>
          <Outputs>
            <ChannelNumber>1</ChannelNumber>
            <Name>CounterValue</Name>
          </Outputs>
        </Adapter-Counter>
      </Instrument>
      <Connectors>
        <Connection>
          <Sink_Instrument>Simulator2</Sink_Instrument>
          <Source_Instrument>Simulator1</Source_Instrument>
        </Connection>
        <Connection>
          <Sink_Instrument>Simulator2</Sink_Instrument>
          <Source_Instrument>Counter</Source_Instrument>
        </Connection>
      </Connectors>
    </Configuration>';
    

    此查询返回配置和连接数据

    SELECT conf.value(N'Name[1]',N'nvarchar(max)') AS Configuration_Name
          ,conf.value(N'CreatedOn[1]',N'nvarchar(max)') AS Configuration_CreatedOn --This should be ISO8601 otherwise a cast to DATETIME is culture dependant!
          ,conf.value(N'Archived[1]',N'bit') AS Configuration_Archived --This should be ISO8601 otherwise a cast to DATETIME is culture dependant!
          ,con.value(N'(Sink_Instrument)[1]',N'nvarchar(max)') AS Connection_Sink_Instrument
          ,con.value(N'(Source_Instrument)[1]',N'nvarchar(max)') AS Connection_Source_Instrument
    FROM @xml.nodes(N'Configuration') AS A(conf)
    OUTER APPLY A.conf.nodes(N'Connectors/Connection') AS B(con)
    

    此查询返回配置、模拟器和输出数据

    SELECT conf.value(N'Name[1]',N'nvarchar(max)') AS Configuration_Name
          ,conf.value(N'CreatedOn[1]',N'nvarchar(max)') AS Configuration_CreatedOn --This should be ISO8601 otherwise a cast to DATETIME is culture dependant!
          ,conf.value(N'Archived[1]',N'bit') AS Configuration_Archived --This should be ISO8601 otherwise a cast to DATETIME is culture dependant!
          ,sim.value(N'(DeviceInstanceName)[1]',N'nvarchar(max)') AS Simulator_DeviceInstanceName
          ,sim.value(N'(DeviceConfiguration/Channels)[1]',N'int') AS Simulator_DeviceConfiguration_Channels
          ,outp.value(N'local-name(.)','nvarchar(max)') AS Simulator_Output_Node
          ,outp.value(N'.','nvarchar(max)') AS Simulator_Output
    FROM @xml.nodes(N'Configuration') AS A(conf)
    OUTER APPLY A.conf.nodes(N'Instrument/*[substring(local-name(),1,17)="Adapter-Simulator"]') AS B(sim)
    OUTER APPLY sim.nodes(N'Outputs/*') AS C(outp)
    

    更新“一体机”

    只需“合并”我的两个语句!试试这个,如果你真的不关心重复。但这可能爆炸 :-)

    SELECT conf.value(N'Name[1]',N'nvarchar(max)') AS Configuration_Name
          ,conf.value(N'CreatedOn[1]',N'nvarchar(max)') AS Configuration_CreatedOn --This should be ISO8601 otherwise a cast to DATETIME is culture dependant!
          ,conf.value(N'Archived[1]',N'bit') AS Configuration_Archived --This should be ISO8601 otherwise a cast to DATETIME is culture dependant!
          ,con.value(N'(Sink_Instrument)[1]',N'nvarchar(max)') AS Connection_Sink_Instrument
          ,con.value(N'(Source_Instrument)[1]',N'nvarchar(max)') AS Connection_Source_Instrument
          ,sim.value(N'(DeviceInstanceName)[1]',N'nvarchar(max)') AS Simulator_DeviceInstanceName
          ,sim.value(N'(DeviceConfiguration/Channels)[1]',N'int') AS Simulator_DeviceConfiguration_Channels
          ,outp.value(N'local-name(.)','nvarchar(max)') AS Simulator_Output_Node
          ,outp.value(N'.','nvarchar(max)') AS Simulator_Output
    FROM @xml.nodes(N'Configuration') AS A(conf)
    OUTER APPLY A.conf.nodes(N'Connectors/Connection') AS B(con)
    OUTER APPLY A.conf.nodes(N'Instrument/*[substring(local-name(),1,17)="Adapter-Simulator"]') AS C(sim)
    OUTER APPLY sim.nodes(N'Outputs/*') AS D(outp)
    

    【讨论】:

    • 感谢您的代码,对不起,我是新手,我不介意多个表。我能得到一个交叉连接和多次重复的例子吗?谢谢。
    • @Abe 这个问题解决了吗?您需要进一步的帮助吗?请给我一个提示:如果这个问题得到了解决,您将非常好心,在(最佳)答案的投票计数器下方勾选接受检查。这将 1) 将此问题标记为已解决 2) 让追随者更容易找到最佳解决方案 3) 向回答者支付积分和 4) 向您支付积分。由于您自己已经越过了 15 点边界,因此您还被要求对贡献进行投票。这是说谢谢的方式。编码快乐!
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多