這是我的表格測試。 這裏9到22是列名。 我想獲得第一次和最後一次出現的數據1的列名。 我該怎麼做?
例如,在第一行中,第9行和第10列的數據爲1,因此對於此行,我期望獲取9和10. 類似地,在最後一行中,數據1的第一次出現在9中,最後一次出現在17列,我應該得到9和17作爲輸出。 嘗試this問題,但沒有運氣!
這是我的表格測試。 這裏9到22是列名。 我想獲得第一次和最後一次出現的數據1的列名。 我該怎麼做?
例如,在第一行中,第9行和第10列的數據爲1,因此對於此行,我期望獲取9和10. 類似地,在最後一行中,數據1的第一次出現在9中,最後一次出現在17列,我應該得到9和17作爲輸出。 嘗試this問題,但沒有運氣!
Declare @InputTable Table
(
A9 varchar(1),
A10 varchar(1),
A11 varchar(1),
A12 varchar(1),
A13 varchar(1),
A14 varchar(1),
A15 varchar(1),
A16 varchar(1),
A17 varchar(1),
A18 varchar(1),
A19 varchar(1),
A20 varchar(1),
A21 varchar(1),
A22 varchar(1)
)
Insert into @InputTable values
(1,1,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,1,1,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,1,1,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,1,1,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,1,1,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,1,1),
(1,1,1,1,1,1,1,1,1,1,1,0,0,0),
(0,0,0,0,0,0,0,0,0,1,1,1,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,1,1),
(1,1,1,1,1,1,1,1,1,0,0,0,0,0)
Select concat('A',8+CHARINDEX('1',Derivedcolumn)) [First], concat('A',23-charindex('1',reverse(derivedcolumn)))[Last] from
(
Select A9+A10+A11+A12+A13+A14+A15+A16+A17+A18+A19+A20+A21+A22 DerivedColumn,* from @InputTable
)InputTable
結合每一列,使用CHARINDEX找到第一個發生在過去的發生,扭轉字符串,發現在1號發生反轉的字符串,這將是我們的最後一個。
如果你有列固定數量的你可以
MariaDB [sandbox]> drop table if exists t;
Query OK, 0 rows affected (0.03 sec)
MariaDB [sandbox]> create table t (id int, col1 int,col2 int,col3 int,col4 int);
Query OK, 0 rows affected (0.12 sec)
MariaDB [sandbox]> insert into t values
-> (1,1,1,0,0),
-> (2,0,0,1,1);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
MariaDB [sandbox]>
MariaDB [sandbox]> select t.id, concat(col1,col2,col3,col4), instr(concat(col1,col2,col3,col4),1) firstcol,
-> 5 - instr(reverse(concat(col1,col2,col3,col4)),1) lastcol
-> from t;
+------+-----------------------------+----------+---------+
| id | concat(col1,col2,col3,col4) | firstcol | lastcol |
+------+-----------------------------+----------+---------+
| 1 | 1100 | 1 | 2 |
| 2 | 0011 | 3 | 4 |
+------+-----------------------------+----------+---------+
2 rows in set (0.00 sec)
看起來更像是C++/C#的一種問題。首先和最後意味着什麼? SQL Server不用於解決矩陣問題。 – PacoDePaco
請自己解決。或者如果您已經完成了一些研究,請將其發佈在您的問題中。顯示你已經搜索和嘗試過。問一個詳細的問題。 – 97amarnathk
歡迎來到SO,您可能需要參加[tour](https://stackoverflow.com/tour),然後閱讀[詢問一個好問題](http://stackoverflow.com/help/how-to-ask ) – Nuageux