13

次の sql を使用して Excel からデータを読み取りますが、最初の数行をスキップする必要がある場合があります。たとえば、実際のデータは 5 行目から始まるので、最初の 4 行をスキップする必要があります。それは可能ですか?

 SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
    'SELECT * FROM [sheet1$]');
4

2 に答える 2

19

シート全体[sheet1$]ではなく、範囲[sheet1 $ A5:Z]を使用します

SELECT *
FROM OPENROWSET(
    'Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
    'SELECT * FROM [sheet1$A5:Z]'
);
于 2012-01-17T23:19:12.653 に答える
5

これにより、取得される行に番号が付けられますが、特定の順序はありません (運が良ければ)。

SELECT *
FROM (
  SELECT *, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS rownum
  FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=YES;Database=c:\daniel\test.xls',
    'SELECT * FROM [sheet1$]')
) s
WHERE rownum > 4;

rownum次のように定義を変更して、必要に応じて順序を指定することもできます。

ROW_NUMBER() OVER (ORDER BY specific_column_list) AS rownum
于 2011-02-08T07:25:24.667 に答える