|
我们如何在列中使用交叉应用和拆分值?- s" w2 s ?, d/ I8 K
我有一个函数dbo.split,它基于逗号将值分成单独的列7 k: a3 G4 p4 o3 p
Id Name Value
! B4 \ a, ]7 b# k1234 A 6767 $ l n P$ ^2 x" f" @
1234 A 6767,1111 4 S( b) P% X I G' t
5678 A 6767 1 K. Q& v8 h, k' K' T
5678 A 6767,1111 ; A: X4 G' L/ x4 T& i/ G
9999 A 67673 u; Z+ e+ w7 Y. T( P# t
请帮助SQL查询进行交叉申请,也请使用拆分功能, m, p3 y0 J3 {6 \$ z( L
谢谢
6 [1 m# V5 M/ T! A3 K- y3 A8 L. U
* e# n3 s+ x8 Q6 A r+ J解决方案:
. |* u/ R% G$ i- t7 T; Z- t ; T$ |2 x6 B, k8 r
% C/ H9 \& G. Y! @/ y; s5 M' u4 v% _ T. k; {, ~8 Q0 |. j
您可以使用CROSS APPLY将拆分功能与列作为参数一起使用。
& @: w( V+ \" SSELECT pd.contentnodeid,+ x e8 V. g3 @
pt.name,
3 W2 \) P$ \2 u! i9 @ s.Value2 N" T) T3 s x
FROM vw_abc pd
# l/ J5 F0 h6 n# H8 t7 ~3 Y/ I INNER JOIN propertytype pt% ^. i& h) _ @, i9 V
ON pd.propertytypeid = pt.id$ E# R) p7 t9 K4 s1 j \/ f( G
INNER JOIN tab t4 N1 E+ h# f0 ?# q4 J
ON t.id = pt.tabid! B9 v6 e+ Q4 i3 q, `+ M
INNER JOIN contenttype ct' v# W2 D. v3 z0 i: B
ON ct.nodeid = pt.contenttypeid! |1 T6 j: \* D4 d9 [( C& K8 V4 R
INNER JOIN propertytype pt1
, S: `7 n/ p2 D; |, W ON pt1.name = pt.name7 H g' ^/ q6 x c! v' N9 t
INNER JOIN vw_abc pd15 i: S* m7 f, u5 X& _' _
ON pd1.propertytypeid = pt1.id
. H: ^* W% d5 N: A, H& B CROSS APPLY dbo.split(',', pd1.datanvarchar) as s
3 ~0 n B. g7 l2 U/ eWHERE t.TEXT LIKE 'ANC'
* [ Q+ o/ ]# _: m- m' J AND pd1.datanvarchar 'NULL'
5 M5 w) e. U+ O AND pd1.datanvarchar ''# }5 L, l2 ]5 Y. s! V
AND pd.datanvarchar LIKE '%'
8 O/ _' M4 V* a, ?- d6 z! R AND pd1.datanvarchar LIKE '%' |
|