幫助XML我從txt文件的XML我得到奇怪的錯誤(對我來說) 有2個客戶和6種產品的txt文件需要從文本
如
結果集是
CUSTID ORDER ID
98295 29199752211 0 1 2321
98295 29199752211 0 1 76
98295 29199752211 0 2 179
98295 29199752211 0 3 180
98295 29199752211 0 4 320
98295 29199752211 0 5 NULL
爲什麼cust-id相同?文本文件中有2個。如果我可以使用一些幫助,我會很高興。
SELECT
(SELECT LNGNO FROM ARTUT13.DBO.TBLFATURA WHERE TXTOZELKOD=(c6.value('(//FISLER/FIS/FISID)[1]','VARCHAR(100)'))),--[LNGNO]
0,--[BYTTUR]
c6.value('(KALEMNO)[1]','VARCHAR(100)'),--[LNGKALEMSIRA]
(SELECT LNGKOD FROM ARTUT13.DBO.TBLURUN WHERE TXTKOD=(c6.value('(URUNKODU)[1]','VARCHAR(100)'))),
c6.value('(MIKTAR)[1]','VARCHAR(100)'),--[DBLMIKTAR]
1,--[BYTBIRIMSIRA]
1,--[DBLCEVRIM]
c6.value('(BIRIMFIYAT)[1]','VARCHAR(100)'),--[DBLBIRIMFIYAT]
0,--[BYTKAYITTIP]
0,--[BYTDETAYMAL]
c6.value('(KDV)[1]','VARCHAR(100)'),--[DBLKDVORANI]
c6.value('(FIYAT)[1]','VARCHAR(100)'),--[DBLNETFIYAT]
'',--[TXTOZELKOD]
0,--[LNGVADEGUNU]
GETDATE(),--[TRHSONISLEMTARIHI]
'MUHASEBE2',--[TXTSONISLEMHOST]
'',--[DBLOTV]
c6.value('(//FISLER/FIS/FISID)[1]','VARCHAR(100)'),--[TXTOZELKOD1]
''--[TXTOZELKOD2]
from
(select cast(c1 as xml) from OPENROWSET (BULK 'C:\AKTAR\FATURA.txt',SINGLE_BLOB
) as T1(c1))as T2(c2)
outer apply c2.nodes('FISLER/FIS/KALEMLER/KALEM') T6(c6)
文本文件包含
<FISLER>
<FIS>
<FISTIPI>SATIS</FISTIPI>
<FISID>29199752211</FISID>
<FISNO>a67502</FISNO>
<IPTAL>0</IPTAL>
<TARIH>13.02.2013</TARIH>
<MUSKODU>35170339P</MUSKODU>
<MUSADI>MEHMET PEHLIVAN - MORTAN GIDA MEHMET PEHLIVAN</MUSADI>
<VERGIDAIRESI>KARABURUN MAL MD</VERGIDAIRESI>
<VERGINO>47035582576</VERGINO>
<DEPOKODU>01</DEPOKODU>
<ODEMETIPI>6</ODEMETIPI>
<TOPLAMBRUT>1200.24</TOPLAMBRUT>
<TOPLAMISKONTO>60.01</TOPLAMISKONTO>
<TOPLAMKDV>205.24</TOPLAMKDV>
<TOPLAMNET>1345.47</TOPLAMNET>
<SATISTEMSILCISIKODU>001</SATISTEMSILCISIKODU>
<DAGITICIKODU></DAGITICIKODU>
<ARACKODU></ARACKODU>
<ARACPLAKA></ARACPLAKA>
<SEVKNO></SEVKNO>
<VADETARIHI>06.03.2013</VADETARIHI>
<KALEMLER>
<KALEM>
<KALEMNO>1</KALEMNO>
<URUNKODU>4009011024</URUNKODU>
<URUNADI>EFE KLASİK RAKI45º-100clx12AD TAVA(63,50 FİYATLI)</URUNADI>
<MIKTAR>24</MIKTAR>
<BIRIMFIYAT>50.01</BIRIMFIYAT>
<FIYAT>1200.24</FIYAT>
<BIRIM></BIRIM>
<KDV>18</KDV>
<ISKONTOLAR>
<ISKONTO>
<price>1200.24</price>
<KODU></KODU>
<ADI>Ürün İsk.1</ADI>
<TIPI></TIPI>
<ORAN>5</ORAN>
<TUTAR>60.012</TUTAR>
</ISKONTO>
</ISKONTOLAR>
</KALEM>
</KALEMLER>
</FIS>
<FIS>
<FISTIPI>SATIS</FISTIPI>
<FISID>29199773107</FISID>
<FISNO>a67511</FISNO>
<IPTAL>0</IPTAL>
<TARIH>13.02.2013</TARIH>
<MUSKODU>100242</MUSKODU>
<MUSADI>NUMBER ONE APART OTEL RESTAURANT</MUSADI>
<VERGIDAIRESI>KARABURUN</VERGIDAIRESI>
<VERGINO>50545253560</VERGINO>
<DEPOKODU>01</DEPOKODU>
<ODEMETIPI>6</ODEMETIPI>
<TOPLAMBRUT>2634.24</TOPLAMBRUT>
<TOPLAMISKONTO>195.21</TOPLAMISKONTO>
<TOPLAMKDV>439.03</TOPLAMKDV>
<TOPLAMNET>2878.06</TOPLAMNET>
<SATISTEMSILCISIKODU>001</SATISTEMSILCISIKODU>
<DAGITICIKODU></DAGITICIKODU>
<ARACKODU></ARACKODU>
<ARACPLAKA></ARACPLAKA>
<SEVKNO></SEVKNO>
<VADETARIHI>06.03.2013</VADETARIHI>
<KALEMLER>
<KALEM>
<KALEMNO>1</KALEMNO>
<URUNKODU>4001017212</URUNKODU>
<URUNADI>EFE YAŞ ÜZÜM RAKISI (45º) - 70 cl 12LI KOLİ</URUNADI>
<MIKTAR>12</MIKTAR>
<BIRIMFIYAT>47.03</BIRIMFIYAT>
<FIYAT>564.36</FIYAT>
<BIRIM></BIRIM>
<KDV>18</KDV>
<ISKONTOLAR>
<ISKONTO>
<price>564.36</price>
<KODU></KODU>
<ADI>Ürün İsk.1</ADI>
<TIPI></TIPI>
<ORAN>10</ORAN>
<TUTAR>56.436</TUTAR>
</ISKONTO>
</ISKONTOLAR>
</KALEM>
<KALEM>
<KALEMNO>2</KALEMNO>
<URUNKODU>4001</URUNKODU>
<URUNADI>EFE YAŞ ÜZÜM RAKISI (45º) - 20 cl 24 LU KOLİ</URUNADI>
<MIKTAR>24</MIKTAR>
<BIRIMFIYAT>16.07</BIRIMFIYAT>
<FIYAT>385.68</FIYAT>
<BIRIM></BIRIM>
<KDV>18</KDV>
<ISKONTOLAR>
<ISKONTO>
<price>385.68</price>
<KODU></KODU>
<ADI>Ürün İsk.1</ADI>
<TIPI></TIPI>
<ORAN>10</ORAN>
<TUTAR>38.568</TUTAR>
</ISKONTO>
</ISKONTOLAR>
</KALEM>
<KALEM>
<KALEMNO>3</KALEMNO>
<URUNKODU>4001013724</URUNKODU>
<URUNADI>EFE YAŞ ÜZÜM RAKISI (45º) - 35 cl 24 LU KOLİ</URUNADI>
<MIKTAR>24</MIKTAR>
<BIRIMFIYAT>26.66</BIRIMFIYAT>
<FIYAT>639.84</FIYAT>
<BIRIM></BIRIM>
<KDV>18</KDV>
<ISKONTOLAR>
<ISKONTO>
<price>639.84</price>
<KODU></KODU>
<ADI>Ürün İsk.1</ADI>
<TIPI></TIPI>
<ORAN>10</ORAN>
<TUTAR>63.984</TUTAR>
</ISKONTO>
</ISKONTOLAR>
</KALEM>
<KALEM>
<KALEMNO>4</KALEMNO>
<URUNKODU>4001011013</URUNKODU>
<URUNADI>EFE YAŞ ÜZÜM RAKISI (45º) - 100 cl 12LI TAVA</URUNADI>
<MIKTAR>6</MIKTAR>
<BIRIMFIYAT>60.37</BIRIMFIYAT>
<FIYAT>362.22</FIYAT>
<BIRIM></BIRIM>
<KDV>18</KDV>
<ISKONTOLAR>
<ISKONTO>
<price>362.22</price>
<KODU></KODU>
<ADI>Ürün İsk.1</ADI>
<TIPI></TIPI>
<ORAN>10</ORAN>
<TUTAR>36.222</TUTAR>
</ISKONTO>
</ISKONTOLAR>
</KALEM>
<KALEM>
<KALEMNO>5</KALEMNO>
<URUNKODU>4010017001</URUNKODU>
<URUNADI>EFE 5 YILLIK RAKI45º-70clx3AD KOLİ</URUNADI>
<MIKTAR>6</MIKTAR>
<BIRIMFIYAT>113.69</BIRIMFIYAT>
<FIYAT>682.14</FIYAT>
<BIRIM></BIRIM>
<KDV>18</KDV>
</KALEM>
</KALEMLER>
</FIS>
</FISLER>
看起來不像設定的結果,你必須在相關的XML或查詢任何方式。 XML中沒有值「98295」,並且查詢輸出中沒有「custid」列。 – 2013-02-16 10:17:11
是的,它只是在txt文件中複製了Custid,即。 98295來自另一個表格(SELECT LNGNO FROM ARTUT13.DBO.TBLFATURA WHERE TXTOZELKOD =(c6.value('(// FISLER/FIS/FISID)[1]','VARCHAR(100)'))),thnx –
user2078011
2013-02-16 10:22:13
我猜這將是你的問題是無論你使用'c6.value('(// FISLER/FIS/FISID)[1]','VARCHAR(100)')',因爲它總是會找到第一個'FISID '在XML中。試試這個。 'c6.value( '(../../ FISID)[1]', 'VARCHAR(100)')'。 – 2013-02-16 10:22:53